我最近在我正在处理的项目中的 Comment 模型中添加了一个新的“提交”属性。在迁移中,我创建了这样的列:add_column :comments, :submitted, :boolean
. 注意:我使用 MySQL 作为数据库。
我希望这个属性有一个默认值false
,所以我添加了一个before_create
这样的方法:
before_create :default_values
def default_values
self.submitted = false
end
这对我来说似乎是正确的,但是每当我尝试添加新评论时,什么都不会发生,并且控制台会显示错误。我的创建方法是通过 AJAX 完成的,控制器通过 JS 正确处理了该方法,但由于某种原因,它默认为format html
并试图重定向到不同的页面。
在玩了一会儿之后,我改变了我的default_values
方法,看起来像这样:
def default_values
self.submitted = 0
end
之后一切正常。这与 Rails 使用tinyint
数据库中的布尔字段有关吗?我原以为它足够聪明,可以在 false/true 和 1/0 之间进行转换。
有趣的是,我尝试通过控制台创建一个新评论,并且能够毫无问题地将我的submitted
属性设置为false
。为什么我必须使用整数而不是真/假值?