我想创建一个查找方法。应该找到所有具有“1分钟”或“2分钟”tid并且形式为“Nyhedsbrev”的konkurrencer。Rails帮助查找方法
我已经试过这样的事情:
Konkurrancer.where("tid = ? or ? and form = ?", "2 min", "1 min", "Nyhedsbrev")
它不工作。它只能找到所有形式为Nyhedsbrev的konkurrencer。
我想创建一个查找方法。应该找到所有具有“1分钟”或“2分钟”tid并且形式为“Nyhedsbrev”的konkurrencer。Rails帮助查找方法
我已经试过这样的事情:
Konkurrancer.where("tid = ? or ? and form = ?", "2 min", "1 min", "Nyhedsbrev")
它不工作。它只能找到所有形式为Nyhedsbrev的konkurrencer。
也许这个按预期工作。
Konkurrancer.where("tid IN (?) AND form = ?", ['2 min', '1 min'], 'Nyhedsbrev')
除此之外,你要使用的“或” syntac是这样写的SQL:
SELECT * FROM foo WHERE column1 = 'foo' OR column1 = 'BAR'
注意,为“OR”条件,你仍然需要列出列重新命名。
试试这个:
Konkurrancer.where("tid = ? or tid = ?", "2 min", "1 min").where(:form => "Nyhedsbrev")
您还可以使用:
Konkurrancer.where("form = ? and (tid = ? or tid = ?)", "Nyhedsbrev", "2 min", "1 min")
你的SQL是有点不对,我想你想要这样的:
Konkurrancer.where(
"(tid = ? or tid = ?) and form = ?",
"2 min",
"1 min",
"Nyhedsbrev"
)
注二等提的tid
列名称和括号。
我会批准你的答案。你知道我在哪里可以阅读关于SQL的SQL查找方法。我现在不知道那个人可以使用IN(?) – 2011-04-24 20:01:25
你可以在这里阅读关于ActiveRecord查询界面:http://guides.rubyonrails.org/active_record_querying.html 通常你可以在SQL中做的一切,你可以在ActiveRecord 。 – 2011-04-24 20:03:14