Method: EnumTable::Record::ClassMethods#expand_hash_conditions_for_aggregates

Defined in:
lib/enum_table/record.rb

#expand_hash_conditions_for_aggregates(attrs) ⇒ Object

Enables .where(name: value) for enums.



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/enum_table/record.rb', line 116

def expand_hash_conditions_for_aggregates(attrs)  # :nodoc:
  conditions = super
  enums.each do |name, reflection|
    if conditions.key?(name)
      value = conditions.delete(name)
    elsif conditions.key?((string_name = name.to_s))
      value = conditions.delete(string_name)
    else
      next
    end
    if value.is_a?(Array)
      id = value.map { |el| reflection.id(el) }
    else
      id = reflection.id(value)
    end
    conditions[reflection.id_name] = id
  end
  conditions
end