我想創建一個查找方法。應該找到所有具有「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