Class: AdminAssistant::ActiveRecordColumn::ConditionUpdate
- Inherits:
-
Object
- Object
- AdminAssistant::ActiveRecordColumn::ConditionUpdate
- Defined in:
- lib/admin_assistant/active_record_column.rb
Instance Method Summary collapse
- #add_blank_condition ⇒ Object
- #add_case_insensitive_string_comparison ⇒ Object
- #add_comparative_condition ⇒ Object
- #add_equality_condition ⇒ Object
- #add_range_condition ⇒ Object
- #column_is_a_string_type? ⇒ Boolean
- #comparator ⇒ Object
- #compare_to_range? ⇒ Boolean
-
#initialize(ar_query_condition, search, name, field_type) ⇒ ConditionUpdate
constructor
A new instance of ConditionUpdate.
- #run ⇒ Object
- #table_name ⇒ Object
- #value_for_query ⇒ Object
Constructor Details
#initialize(ar_query_condition, search, name, field_type) ⇒ ConditionUpdate
Returns a new instance of ConditionUpdate.
70 71 72 73 |
# File 'lib/admin_assistant/active_record_column.rb', line 70 def initialize(ar_query_condition, search, name, field_type) @ar_query_condition, @search, @name, @field_type = ar_query_condition, search, name, field_type end |
Instance Method Details
#add_blank_condition ⇒ Object
75 76 77 78 79 80 81 |
# File 'lib/admin_assistant/active_record_column.rb', line 75 def add_blank_condition @ar_query_condition.add_condition do |sub_cond| sub_cond.boolean_join = :or sub_cond.sqls << "#{table_name}.#{@name} is null" sub_cond.sqls << "#{table_name}.#{@name} = ''" end end |
#add_case_insensitive_string_comparison ⇒ Object
83 84 85 86 87 |
# File 'lib/admin_assistant/active_record_column.rb', line 83 def add_case_insensitive_string_comparison @ar_query_condition.sqls << "LOWER(#{table_name}.#{@name}) like LOWER(?)" @ar_query_condition.bind_vars << "%#{value_for_query}%" end |
#add_comparative_condition ⇒ Object
89 90 91 92 |
# File 'lib/admin_assistant/active_record_column.rb', line 89 def add_comparative_condition @ar_query_condition.sqls << "#{table_name}.#{@name} #{comparator} ?" @ar_query_condition.bind_vars << value_for_query end |
#add_equality_condition ⇒ Object
94 95 96 97 |
# File 'lib/admin_assistant/active_record_column.rb', line 94 def add_equality_condition @ar_query_condition.sqls << "#{table_name}.#{@name} = ?" @ar_query_condition.bind_vars << value_for_query end |
#add_range_condition ⇒ Object
99 100 101 102 103 104 105 106 107 108 |
# File 'lib/admin_assistant/active_record_column.rb', line 99 def add_range_condition if lower_limit = @search.send(@name)[:gt] @ar_query_condition.sqls << "#{table_name}.#{@name} > ?" @ar_query_condition.bind_vars << lower_limit end if upper_limit = @search.send(@name)[:lt] @ar_query_condition.sqls << "#{table_name}.#{@name} < ?" @ar_query_condition.bind_vars << upper_limit end end |
#column_is_a_string_type? ⇒ Boolean
118 119 120 |
# File 'lib/admin_assistant/active_record_column.rb', line 118 def column_is_a_string_type? ![:boolean, :integer].include?(@field_type) end |
#comparator ⇒ Object
114 115 116 |
# File 'lib/admin_assistant/active_record_column.rb', line 114 def comparator @search.comparator @name end |
#compare_to_range? ⇒ Boolean
110 111 112 |
# File 'lib/admin_assistant/active_record_column.rb', line 110 def compare_to_range? @search.compare_to_range? @name end |
#run ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/admin_assistant/active_record_column.rb', line 122 def run if @search.blank?(@name) add_blank_condition else unless value_for_query.nil? if comparator add_comparative_condition elsif compare_to_range? add_range_condition elsif column_is_a_string_type? add_case_insensitive_string_comparison else add_equality_condition end end end end |
#table_name ⇒ Object
140 141 142 |
# File 'lib/admin_assistant/active_record_column.rb', line 140 def table_name @search.model_class.table_name end |
#value_for_query ⇒ Object
144 145 146 |
# File 'lib/admin_assistant/active_record_column.rb', line 144 def value_for_query @search.send @name end |