我正在尝试创建一个find方法。那应该找到所有kankurrencer有tid“1分钟”或“2分钟”,形式是“Nyhedsbrev”。
我尝试过这样的事情:
Konkurrancer.where("tid = ? or ? and form = ?", "2 min", "1 min", "Nyhedsbrev")
它不起作用。它只找到形式为Nyhedsbrev的所有konkurrencer。
答案 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
列名称和括号。