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