Rails中的布尔字段

时间:2012-05-22 16:54:28

标签: ruby-on-rails database

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

的表达式
select * from articles where published = true

在Rails中表示为

Article.where 'published = true'

将在Sqlite3中失败并显示消息no such column: true

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

1 个答案:

答案 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

您还在使用分配操作=,而不是使用相等比较==