module AdminIt::ActiveRecordData::ValueFilter
Public Instance Methods
all_values(collection = nil, &block)
click to toggle source
# File lib/admin_it/data/active_record/filter.rb, line 5 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)
click to toggle source
# File lib/admin_it/data/active_record/filter.rb, line 19 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.where(conditions, *binding) end