Module: MakeModelSearchable

Defined in:
lib/make_model_searchable.rb,
lib/make_model_searchable/version.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
"0.1.1"

Instance Method Summary collapse

Instance Method Details

#get_valid_fields(options) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/make_model_searchable.rb', line 21

def get_valid_fields(options)
  column_names = self.columns.map(&:name)
  column_types = self.columns.map(&:type)
  searchable_columns = []
  if column_names.length == column_types.length
    column_names.each_with_index do |column_name, index|
      searchable_columns << column_name if column_types[index].to_sym == :string 
    end
  end
  if searchable_columns.present?
    options.select{ |option| searchable_columns.include?(option) }
  else
    options = []
  end
  options
end

#searchable_attributes(*options) ⇒ Object



6
7
8
9
10
11
# File 'lib/make_model_searchable.rb', line 6

def searchable_attributes(*options)
  options = options.collect{ |option| option.to_s }
  self.connection
  setup_fields(options)
  self.extend(ClassMethods)
end

#setup_fields(options) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/make_model_searchable.rb', line 13

def setup_fields(options)
  unless options.present?
    options = self.column_names
  end
  valid_fields = get_valid_fields(options)
  self.instance_variable_set(:@selected_fields, valid_fields)
end