Ruby on rails Rails中的布尔字段
在我的Rails应用程序中,我需要在模型中存储布尔字段。现在,这导致了一个问题,因为Sqlite3(我用于开发)使用字符常量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中失败,并
'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