我想搜索show屬性爲true的用戶。find中的布爾條件的正確語法
show = true
@users = User.find(:all,
:conditions => ["show = ?", show])
這似乎不適合我。
我想搜索show屬性爲true的用戶。find中的布爾條件的正確語法
show = true
@users = User.find(:all,
:conditions => ["show = ?", show])
這似乎不適合我。
語法看起來很適合我。
你的development.log顯示了什麼?查詢SQL應該在那裏顯示爲執行。
這是錯誤:ActiveRecord :: StatementInvalid(Mysql :: Error:您的SQL語法中有錯誤;請檢查相應的手冊你的MySQL服務器版本的正確語法使用附近'顯示= 1) – chief 2010-03-02 01:41:43
嘗試查詢的另一個版本:
User.find_all_by_show(true)
確保users
表中有一個tinyint(1)
(即boolean
)列稱爲show
。
我以前見過這種行爲。對於陣列條件,我必須使用1
/0
代替true
false
。試試這個:
show = 1
@users = User.find(:all,
:conditions => ["show = ?", show])
你的例子應該可以工作。如果您運行的是舊版本的rails,則可能需要重新啓動服務器。
另一種選擇是使用哈希語法像...
@users = User.find(:all, :conditions => {:show => true})
然後你就可以在哈希中只需添加您的其他條件。
這個哈希將爲我工作。 – chief 2010-03-02 04:19:55
您正在使用哪個數據庫? MySQL或SQLite?
在MySQL布爾值存儲爲1和0,並與其他數據庫不同,所以在遷移指定默認值爲1
請檢查一遍,然後重試。
由於Toby Hede表示您可以檢查日誌中生成的查詢,並嘗試在查詢瀏覽器或任何其他位置運行該查詢,並查看您是否獲得了預期的結果。
你可以發佈你的用戶表模式嗎? – 2010-03-02 02:20:22
class CreateUsers「1」 .... –
chief
2010-03-02 03:40:51