Module: Isuggest::InstanceMethods
- Defined in:
- lib/isuggest/finder.rb
Instance Method Summary collapse
- #create_suggestion(base_value, num) ⇒ Object
- #filter_suggestions(me_suggests, num) ⇒ Object
- #is_email? ⇒ Boolean
- #is_unique? ⇒ Boolean
- #isuggest_columns ⇒ Object
- #options ⇒ Object
- #suggestions(with_suffix = nil) ⇒ Object
Instance Method Details
#create_suggestion(base_value, num) ⇒ Object
64 65 66 67 68 69 70 71 72 73 |
# 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) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# 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? ⇒ Boolean
55 56 57 58 |
# 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? ⇒ Boolean
18 19 20 21 |
# 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 ⇒ Object
51 52 53 |
# File 'lib/isuggest/finder.rb', line 51 def isuggest_columns return [:on] end |
#options ⇒ Object
60 61 62 |
# File 'lib/isuggest/finder.rb', line 60 def self.class. end |
#suggestions(with_suffix = nil) ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# 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 |