我有填写学生详细信息的表单,该表格会将值添加到名为“student”的表中。
在该表中,我有一个名为'ctime'的列,它具有数据库默认值。
列结构
ctime |没有时区的时间戳| not null default now()
因此,在添加新学生时,我没有给表单中的ctime列赋值,但是它导致错误“PG ::错误:错误:列中的空值”ctime“违反了非空约束”。
我的问题是,即使它在数据库中有默认值,为什么会出现错误?
请帮助我。
提前致谢。
答案 0 :(得分:0)
如果已在表模式中定义了具有某个静态默认值的列,则AR实例中的相应属性将在创建实例后自动具有此值。检查您是否正确分配默认值。
您可以在迁移中为列设置默认选项,也可以使用回调before_save
class Model < ActiveRecord::Base
before_save :default_values
def default_values
self.status ||= 'value'
end
end
或者您甚至可以使用after_initialize
方法设置默认值。