module Isuggest::InstanceMethods
Public Instance Methods
create_suggestion(base_value, num)
click to toggle source
# File lib/isuggest/finder.rb, line 64 def create_suggestion(base_value, num) if is_email? base_value = base_value.split('@') return "#{base_value.first}#{options[:seperator].sample}#{rand(num)}@#{base_value.last}" elsif @suffix.present? return "#{base_value}#{options[:seperator].sample}#{rand(num)}#{@suffix}" else return "#{base_value}#{options[:seperator].sample}#{rand(num)}" end end
filter_suggestions(me_suggests, num)
click to toggle source
# File lib/isuggest/finder.rb, line 34 def filter_suggestions(me_suggests, num) column_name = isuggest_columns.first #Considering totol_results count is relatively small < 500, #doubling it should reduce the DB hits while(me_suggests.length < (self.class.total_results * 2)) do me_suggests << create_suggestion(self.send(column_name), num) me_suggests.uniq! end db_set = self.class.where(["#{column_name} in (#{me_suggests.map{|item| '"'+item+'"'}.join(',')})"]).select(column_name).collect(&:"#{column_name}") results = (db_set.length == 0) ? me_suggests : (me_suggests - db_set) #return only the number of results set in configuration return ((results.length > self.class.total_results) ? results[0..(self.class.total_results - 1)] : results) end
is_email?()
click to toggle source
# File lib/isuggest/finder.rb, line 55 def is_email? regex = /([\w]+@[\w]+.[\w]+[.\w]*)/i self.send(isuggest_columns.first).match(regex).present? end
is_unique?()
click to toggle source
# File lib/isuggest/finder.rb, line 18 def is_unique? column_name = isuggest_columns.first.to_sym return !self.class.exists?(column_name => self.send(column_name)) end
isuggest_columns()
click to toggle source
# File lib/isuggest/finder.rb, line 51 def isuggest_columns return options[:on] end
options()
click to toggle source
# File lib/isuggest/finder.rb, line 60 def options self.class.isuggest_options end
suggestions(with_suffix=nil)
click to toggle source
# File lib/isuggest/finder.rb, line 23 def suggestions(with_suffix=nil) me_suggests = [] radix = 10 @suffix = with_suffix unless with_suffix.nil? while me_suggests.length < self.class.total_results me_suggests = filter_suggestions(me_suggests, radix) radix = radix * 10 end return me_suggests end