Rails booleans - 真与假对比1和0

时间:2012-09-19 17:23:43

标签: mysql ruby-on-rails boolean

我最近在我正在处理的项目中为Comment模型添加了一个新的“已提交”属性。在迁移中,我创建了这样的列:add_column :comments, :submitted, :boolean注意:我正在使用MySQL作为数据库。

我希望此属性的默认值为false,因此我添加了before_create方法:

before_create :default_values

def default_values
  self.submitted = false
end

这对我来说似乎是正确的,但每当我尝试添加新评论时,什么都不会发生,控制台会显示错误。我的create方法是通过AJAX完成的,控制器正确处理JS的方法,但由于某种原因,它默认为format html并试图重定向到另一个页面。

经过一段时间的游戏后,我将default_values方法更改为:

def default_values
  self.submitted = 0
end

之后一切正常。这是否与使用tinyint的Rails对数据库中的布尔字段有关?我原本认为在false / true和1/0之间进行转换是足够聪明的。

有趣的是,我尝试通过控制台创建新评论,并且能够将submitted属性设置为false而没有任何问题。我有必要使用整数而不是真/假值吗?

2 个答案:

答案 0 :(得分:4)

关于布尔人很聪明,只需使用:

object.submitted?

作为访问方法......

答案 1 :(得分:2)

为迁移添加默认值:

add_column :comments, :submitted, :boolean, :default => false