2010-07-07 58 views
0

嘿,我得到了一个有点长的发现条件,我想让它变得更长。Rails - Findin 3条件?

到目前为止

:conditions => ["name LIKE ? OR description LIKE ?", "%#{params[:search_keyword]}%", 
     "%#{params[:search_keyword]}%"] 

在那里的搜索模型,如果属性:名称或:描述就像是从一个文本框设置了一个param。现在我也想补充一下,以确保找到的条目是最新的。我已经有

:conditions => ["start_date between ? and ? ", Date.today, @yearstime ] 

凡@yearstime是@yearstime = Date.today +从本日起一年该模型从现在

365.days所以基本上所有的事情,我想结合这两个条件,但我不确定的语法。我试图把它放在一起。

:conditions => ["name LIKE ? OR description LIKE ? AND start_date between ? and ?", 
"%#{params[:search_keyword]}%", "%#{params[:search_keyword]}%", Date.today, @yearstime ] 

但它仍然没有计算日期参数....任何想法我做错了什么?

回答

1

看起来这可能是操作员问题的顺序。尝试

:conditions => ["(name LIKE ? OR description LIKE ?) AND (start_date between ? and ?)", 
"%#{params[:search_keyword]}%", "%#{params[:search_keyword]}%", Date.today, @yearstime ] 

AND操作符比OR

参考更高的优先级:

0

是起始日期的日期,或DATE_TIME。可能是一个铸造问题,从一个到另一个。