Вы можете создать запрос с помощью отношений.Запрос не будет выполнен, пока его не нужно будет оценить.Это хорошо для поиска, где некоторые параметры являются необязательными.
@cars = Cars.where(:color => "black")
@cars = @cars.where(:doors => 4)
@cars = @cars.where("year >= '2011-01-01'")
@cars = @cars.where("year <= '2011-02-01'")
Или вы можете просто объединить все это в один:
Cars.where(["color=? AND doors=? AND year >= ? AND year <= ?", "black", 4, "2011-01-01", "2011-02-01"]
ОБНОВЛЕНИЕ: Для Rails <3 </p>
@cars = Cars.scoped(:conditions => {:color => "black"})
@cars = @cars.scoped(:conditions => {:doors => 4})
@cars = @cars.scoped(:conditions => "year >= '2011-01-01'")
@cars = @cars.scoped(:conditions => "year <= '2011-02-01'")
ИЛИ
Cars.all(:conditions => ["color=? AND doors=? AND year >= ? AND year <= ?", "black", 4, "2011-01-01", "2011-02-01"]