Module: MakeModelSearchable::ClassMethods

Defined in:
lib/make_model_searchable.rb

Instance Method Summary collapse

Instance Method Details

#search(search_term) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/make_model_searchable.rb', line 39

def search(search_term)
  valid_fields = self.instance_variable_get(:@selected_fields)
  if valid_fields.present?
    if search_term
      search_term = "%#{search_term.downcase}%"
      users = self.arel_table
      arel_node = Arel::Nodes::Node.new
      valid_fields.each_with_index do |val, index|
        if index == 0
          arel_node = users[val].lower.matches(search_term)
        else
          arel_node = arel_node.or(users[val].lower.matches(search_term))
        end
      end
      where(arel_node)
    else
      all
    end
  else
    raise Exception,  "Please pass valid attributes for class: #{self.name}"
  end
end