Class: ActiveScaffold::Config::FieldSearch

Inherits:
Base show all
Defined in:
lib/active_scaffold/config/field_search.rb

Constant Summary collapse

ActiveScaffold::DataStructures::ActionLink.new('show_search', :label => :search, :type => :collection, :security_method => :search_authorized?, :ignore_method => :search_ignore?)
@@text_search =
:full
@@or_delimiter =
','

Instance Attribute Summary collapse

Attributes inherited from Base

#action_group, #core, #user

Instance Method Summary collapse

Methods inherited from Base

#crud_type, #formats, #formats=, inherited

Methods included from ActiveScaffold::Configurable

#configure, #method_missing

Constructor Details

#initialize(core_config) ⇒ FieldSearch

Returns a new instance of FieldSearch.



5
6
7
8
9
10
# File 'lib/active_scaffold/config/field_search.rb', line 5

def initialize(core_config)
  super

  @text_search = self.class.text_search
  @or_delimiter = self.class.or_delimiter
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class ActiveScaffold::Configurable

Instance Attribute Details

#default_paramsObject

default search params default_params = => {“from”=>“test”, “to”=>“”, “opt”=>“%?%”}



85
86
87
# File 'lib/active_scaffold/config/field_search.rb', line 85

def default_params
  @default_params
end

#human_conditionsObject

human conditions instead of just filtered you may show the user a humanized search condition statment



89
90
91
# File 'lib/active_scaffold/config/field_search.rb', line 89

def human_conditions
  @human_conditions
end

the ActionLink for this action



59
60
61
# File 'lib/active_scaffold/config/field_search.rb', line 59

def link
  @link
end

#or_delimiterObject

Returns the value of attribute or_delimiter.



56
57
58
# File 'lib/active_scaffold/config/field_search.rb', line 56

def or_delimiter
  @or_delimiter
end

#text_searchObject

A flag for how the search should do full-text searching in the database:

  • :full: LIKE %?%

  • :start: LIKE ?%

  • :end: LIKE %?

  • false: LIKE ?

Default is :full



54
55
56
# File 'lib/active_scaffold/config/field_search.rb', line 54

def text_search
  @text_search
end

Instance Method Details

#columnsObject

provides access to the list of columns specifically meant for the Search to use



37
38
39
40
41
42
43
44
# File 'lib/active_scaffold/config/field_search.rb', line 37

def columns
  # we want to delay initializing to the @core.columns set for as long as possible. Too soon and .search_sql will not be available to .searchable?
  unless @columns
    self.columns = @core.columns._inheritable
    self.columns.exclude @core.columns.active_record_class.locking_column.to_sym
  end
  @columns
end

#optional_columnsObject



66
67
68
# File 'lib/active_scaffold/config/field_search.rb', line 66

def optional_columns
  @optional_columns ||= []
end

#optional_columns=(optionals) ⇒ Object

rarely searched columns may be placed in a hidden subgroup



62
63
64
# File 'lib/active_scaffold/config/field_search.rb', line 62

def optional_columns=(optionals)
  @optional_columns= Array(optionals)
end

#or_columnsObject



76
77
78
79
80
81
# File 'lib/active_scaffold/config/field_search.rb', line 76

def or_columns
  unless @or_columns
    self.or_columns = @core.columns.collect{|c| c.name if @core.columns._inheritable.include?(c.name) and c.searchable? and c.column and c.column.text?}.compact
  end
  @or_columns
end

#or_columns=(or_columns) ⇒ Object

columns which should support or searches eg like ‘x’ or … like ‘y’



72
73
74
# File 'lib/active_scaffold/config/field_search.rb', line 72

def or_columns=(or_columns)
  @or_columns = Array(or_columns)
end