2013-09-18 3 views
1

У меня есть форма поиска с несколькими полями, и в настоящее время она работает. Я написал поисковое действие следующим образом:Как выполнить комплексный поиск с использованием ActiveRecord

conditions = {} 
conditions[:x] = params[:x] unless params[:x].blank? 
conditions[:y] = params[:y] unless params[:y].blank? 
conditions[:z] = params[:z] unless params[:z].blank? 
etc. 
@results = Material.where(conditions) 

И это прекрасно. Но теперь я хочу, чтобы добавить условие, которое говорит по существу «, где уровень меньше или равен Params [: уровень], который будет выглядеть, как это в моей голове:

conditions[:level] <= params[:level] ... 

Но это не работает, потому что вы, кажется, можно только добавить хэши, используя следующий синтаксис. Так что мой вопрос, как я хотел бы добавить такое условие в запросе.

ответ

1

вы не можете добавить это к существующей conditions хэш. хэш key: value аргументы where может толькоwhere key = value, а не key <= value.

Используйте параметризованную строку и дополнительный where:

@results = Material.where(conditions).where("level <= ?", params[:level]) 
+0

Я думал, что это может быть так. Спасибо за помощь! – Finnjon

Смежные вопросы