2012-05-22 126 views
0

在我的Rails應用程序中,我需要在模型中存儲布爾字段。現在,這會導致問題,因爲Sqlite3(我用於開發)使用字符常量't''f'作爲真值。但是,我的應用程序將部署到MySQL,使用文字truefalse(分別對應於tinyints 1和0)。這使得使用的問題的SQL條件下,由於所述類型的表達Rails中的布爾字段

select * from articles where published = true 

Rails中表示爲

Article.where 'published = true' 

將SQLITE3失敗與消息no such column: true

在Rails中處理布爾適配器的首選方法是什麼?

回答

1

使用活動記錄,你會做

Article.where(:published => true) 

你可能想借此更進一步,並且使這個範圍

class Article < ActiveRecord::Base 
    scope :published, where(:published => true) 
end 

所以,在你的控制器,你可以去

@published_articles = Article.published 

有關active_record的查詢界面的更多信息,請點擊:http://guides.rubyonrails.org/active_record_querying.html

您也使用賦值操作=,而不是平等比較==

+0

謝謝!我不知道範圍設施。 重新分配:那段代碼不是Ruby,而是SQL,它使用=進行相等性測試。 – jforberg