在条件哈希中使用函数

时间:2011-01-15 07:38:47

标签: ruby-on-rails

我正在构建条件哈希以运行查询但我遇到了一个特定案例的问题:     conditions2 = ['extract(来自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"."先于我的病情?

谢谢你, P上。

1 个答案:

答案 0 :(得分:0)

对于类似这样的事情,您可能必须使用find_by_sql编写自己的SQL。仍然将它包装在模型中的方法中,以便模型的朋友可以很好地访问它。