Rails - 查找3个条件?

时间:2010-07-07 01:07:41

标签: ruby-on-rails find conditional-statements

嘿,我的查找条件有点冗长,我想让它更长。

到目前为止

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

它在模型中搜索属性:name或:description是否类似于文本框中的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 ]

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

2 个答案:

答案 0 :(得分:1)

看起来这可能是运营商问题的顺序。尝试

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

AND运算符的优先级高于OR

参考:

答案 1 :(得分:0)

start_date是date还是date_time。可能是从一个到另一个的铸造问题。