Используйте функцию в хеше условий - PullRequest
0 голосов
/ 15 января 2011

Я создаю хеш условий для выполнения запроса, но у меня проблема с одним конкретным случаем: condition2 = ['extract (year from signature_date) =?', Params [: year] .to_i], если только params[: year] .blank?

conditions[:country_id] = COUNTRIES.select{|c| c.geography_id == params[:geographies]} unless params[:geographies].blank?
conditions[:category_id] = CATEGORY_CHILDREN[params[:categories].to_i] unless params[:categories].blank?
conditions[:country_id] = params[:countries] unless params[:countries].blank?
conditions['extract(year from signature_date)'] = params[:year].to_i unless params[:year].blank?

Но последняя строка разбивает все, как это интерпретируется следующим образом:

AND ("negotiations"."extract(year from signature_date)" = 2010

Есть ли способ избежать того, что "negotiations"."подготовился к моему состоянию?

спасибо, П.

1 Ответ

0 голосов
/ 15 января 2011

Для чего-то подобного вам, вероятно, придется написать собственный SQL с find_by_sql.Тем не менее, оберните его в метод вашей модели, чтобы друзья вашей модели могли легко получить к нему доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...