activerecord:数据库默认值未生效



我有一个表格来填写学生的详细信息,它将把值添加到名为"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方法来设置默认值。

最新更新