У меня есть две модели, Foo и Bar, с одинаковыми атрибутами, и я «кэширую» пользовательские «параметры поиска» в переменную сеанса, которая заканчивается примерно так:
session[:search_params] => {"price"=>"15.0", "air_conditioner"=>"0", "fireplace"=>"0", "number_of_rooms"=>"1", "balcony"=>"0"}
Я бы хотел найти в Foo
и Bar
записи, соответствующие этому запросу.
Сейчас я делаю:
@foo = Foo.new(session[:search_params])
search_attributes = @foo.attributes
search_attributes.delete 'id'
search_attributes.delete 'created_at'
search_attributes.delete 'updated_at'
@results = Foo.where(search_attributes)
@results += Bar.where(search_attributes)
это действительно ужасно.
Может кто-нибудь сказать мне лучше / правильный путь?
Заранее спасибо.
EDIT
Кроме того, некоторые параметры в session[:search_params]
, которые равны «0», на самом деле являются «ложными» в базе данных (логические значения) (заполнены флажками), поэтому я должен выполнить некоторое «преобразование» в эти поля, чтобы query
сделано правильно, то есть, например, air_conditioner => 'false'
вместо air_conditioner => '0'
.