我最近在我正在处理的项目中为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
而没有任何问题。我有必要使用整数而不是真/假值吗?
答案 0 :(得分:4)
关于布尔人很聪明,只需使用:
object.submitted?
作为访问方法......
答案 1 :(得分:2)
为迁移添加默认值:
add_column :comments, :submitted, :boolean, :default => false