在我的Rails应用程序中,我需要在模型中存储布尔字段。现在,这会导致问题,因为Sqlite3(我用于开发)使用字符常量't'
和'f'
作为真值。然而,我的应用程序将部署到的MySQL使用文字true
和false
(分别对应于tinyints 1和0)。这使得SQL条件的使用成为问题,因为类型
select * from articles where published = true
在Rails中表示为
Article.where 'published = true'
将在Sqlite3中失败并显示消息no such column: true
。
在Rails中处理布尔适配器的首选方法是什么?
答案 0 :(得分: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
您还在使用分配操作=
,而不是使用相等比较==