Ruby on rails Rails中的布尔字段

Ruby on rails Rails中的布尔字段,ruby-on-rails,database,Ruby On Rails,Database,在我的Rails应用程序中,我需要在模型中存储布尔字段。现在,这导致了一个问题,因为Sqlite3(我用于开发)使用字符常量't'和'f'表示真值。然而,我的应用程序将部署到的MySQL使用文本true和false(分别对应于tinyints 1和0)。这使得SQL条件的使用有问题,因为 select * from articles where published = true 用Rails表示为 Article.where 'published = true' 将在Sqlite3中失败,并

在我的Rails应用程序中,我需要在模型中存储布尔字段。现在,这导致了一个问题,因为Sqlite3(我用于开发)使用字符常量
't'
'f'
表示真值。然而,我的应用程序将部署到的MySQL使用文本
true
false
(分别对应于tinyints 1和0)。这使得SQL条件的使用有问题,因为

select * from articles where published = true
用Rails表示为

Article.where 'published = true'
将在Sqlite3中失败,并显示消息
无此类列:true


在Rails中可移植地处理布尔适配器的首选方法是什么?

使用active record,您可以这样做

Article.where(:published => true)
您可能会想进一步了解这一点,并将其作为一个范围

class Article < ActiveRecord::Base
  scope :published, where(:published => true)
end
有关活动记录查询界面的更多信息,请参见:


您还使用了赋值操作
=
而不是相等比较
=

谢谢!我不知道scope设施。重新赋值:这段代码不是Ruby,而是SQL,它使用=进行相等性测试。
@published_articles = Article.published