2010-07-07 57 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。可能是一個鑄造問題,從一個到另一個。