module AttrSearchable::ClassMethods

Public Instance Methods

attr_searchable(*args) click to toggle source
# File lib/attr_searchable.rb, line 52
def attr_searchable(*args)
  args.each do |arg|
    attr_searchable_hash arg.is_a?(Hash) ? arg : { arg => arg }
  end
end
attr_searchable_alias(hash) click to toggle source
# File lib/attr_searchable.rb, line 72
def attr_searchable_alias(hash)
  hash.each do |key, value|
    self.searchable_attribute_aliases[key.to_s] = value.respond_to?(:table_name) ? value.table_name : value.to_s
  end
end
attr_searchable_hash(hash) click to toggle source
# File lib/attr_searchable.rb, line 58
def attr_searchable_hash(hash)
  hash.each do |key, value|
    self.searchable_attributes[key.to_s] = Array(value).collect do |column|
      table, attribute = column.to_s =~ /\./ ? column.to_s.split(".") : [name.tableize, column]

      "#{table}.#{attribute}"
    end
  end
end
attr_searchable_options(key, options = {}) click to toggle source
# File lib/attr_searchable.rb, line 68
def attr_searchable_options(key, options = {})
  self.searchable_attribute_options[key.to_s] = (searchable_attribute_options[key.to_s] || {}).merge(options)
end
default_searchable_attributes() click to toggle source
# File lib/attr_searchable.rb, line 78
def default_searchable_attributes
  keys = searchable_attribute_options.select { |key, value| value[:default] == true }.keys
  keys = searchable_attributes.keys.reject { |key| searchable_attribute_options[key] && searchable_attribute_options[key][:default] == false } if keys.empty?
  keys = keys.to_set

  searchable_attributes.select { |key, value| keys.include? key }
end