Module: AdminIt::ActiveRecordData::ValueFilter
- Defined in:
- lib/admin_it/data/active_record.rb
Instance Method Summary collapse
Instance Method Details
#all_values(collection = nil, &block) ⇒ Object
272 273 274 275 276 277 278 279 280 281 282 283 284 |
# File 'lib/admin_it/data/active_record.rb', line 272 def all_values(collection = nil, &block) enum = Enumerator.new do |yielder| field .entity_class .select(self.class.field.field_name) .group(self.class.field.field_name) .count .each do |v, c| yielder << { value: v, count: c } end end block_given? ? enum.each(&block) : enum end |
#apply(collection) ⇒ Object
286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 |
# File 'lib/admin_it/data/active_record.rb', line 286 def apply(collection) return collection if @values.empty? binding = [] conditions = '' if @values.size == 1 && @values[0].nil? conditions = "#{field.field_name} IS NULL" else conditions = "#{field.field_name} IN (?)" binding << @values.select { |v| !v.nil? } if @values.any? { |v| v.nil? } conditions += " OR #{field.field_name} IS NULL" end end collection = collection.where(conditions, *binding) end |