Module: Redmine::Acts::Searchable::ClassMethods

Defined in:
vendor/plugins/acts_as_searchable/lib/acts_as_searchable.rb

Instance Method Summary

Instance Method Details

- (Object) acts_as_searchable(options = {})

Options:

  • :columns - a column or an array of columns to search
  • :project_key - project foreign key (default to project_id)
  • :date_column - name of the datetime column (default to created_on)
  • :sort_order - name of the column used to sort results (default to :date_column or created_on)
  • :permission - permission required to search the model (default to :view_"objects")


32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'vendor/plugins/acts_as_searchable/lib/acts_as_searchable.rb', line 32

def acts_as_searchable(options = {})
  return if self.included_modules.include?(Redmine::Acts::Searchable::InstanceMethods)
  
  cattr_accessor :searchable_options
  self.searchable_options = options

  if searchable_options[:columns].nil?
    raise 'No searchable column defined.'
  elsif !searchable_options[:columns].is_a?(Array)
    searchable_options[:columns] = [] << searchable_options[:columns]
  end

  searchable_options[:project_key] ||= "#{table_name}.project_id"
  searchable_options[:date_column] ||= "#{table_name}.created_on"
  searchable_options[:order_column] ||= searchable_options[:date_column]
  
  # Permission needed to search this model
  searchable_options[:permission] = "view_#{self.name.underscore.pluralize}".to_sym unless searchable_options.has_key?(:permission)
  
  # Should we search custom fields on this model ?
  searchable_options[:search_custom_fields] = !reflect_on_association(:custom_values).nil?
  
  send :include, Redmine::Acts::Searchable::InstanceMethods
end