Предложение
where
отправляет свои аргументы на build_where
def build_where(opts, other = [])
case opts
when String, Array
[@klass.send(:sanitize_sql, other.empty? ? opts : ([opts] + other))]
when Hash
attributes = @klass.send(:expand_hash_conditions_for_aggregates, opts)
PredicateBuilder.build_from_hash(table.engine, attributes, table)
else
[opts]
end
end
Таким образом, в случае Hash
он будет перезаписывать ключи, так как он добавляет новые параметры хеширования к существующему хешу. И если вы передаете String
или Array
, то оно будет суммироваться.