0

在我的 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 中可移植地处理布尔值的首选方法是什么?

4

1 回答 1

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

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

于 2012-05-22T16:59:32.723 回答