Rails帮助查找方法

时间:2011-04-24 19:53:47

标签: ruby-on-rails ruby ruby-on-rails-3

我正在尝试创建一个find方法。那应该找到所有kankurrencer有tid“1分钟”或“2分钟”,形式是“Nyhedsbrev”。

我尝试过这样的事情:

Konkurrancer.where("tid = ? or ? and form = ?", "2 min", "1 min", "Nyhedsbrev")

它不起作用。它只找到形式为Nyhedsbrev的所有konkurrencer。

3 个答案:

答案 0 :(得分:2)

也许这是按预期工作的。

Konkurrancer.where("tid IN (?) AND form = ?", ['2 min', '1 min'], 'Nyhedsbrev')

除此之外,您尝试使用的'OR'语法在SQL中编写如下:

SELECT * FROM foo WHERE column1 = 'foo' OR column1 = 'BAR'

请注意,对于“OR”条件,您仍需要再次列出列名称。

答案 1 :(得分:1)

试试这个:

Konkurrancer.where("tid = ? or tid = ?", "2 min", "1 min").where(:form => "Nyhedsbrev")

您也可以使用:

Konkurrancer.where("form = ? and (tid = ? or tid = ?)", "Nyhedsbrev", "2 min", "1 min")

答案 2 :(得分:1)

你的SQL有点不对,我想你想要这个:

Konkurrancer.where(
    "(tid = ? or tid = ?) and form = ?",
    "2 min",
    "1 min",
    "Nyhedsbrev"
)

请注意第二次提到tid列名称和括号。