防止活动记录INSERT为NULL?

时间:2011-10-17 21:12:40

标签: ruby-on-rails database activerecord attributes insert

我有一个带有计算列的数据库视图,我用它来支持Rails模型。 model.create生成的INSERT INTO语句尝试将该列设置为null,这会导致数据库抱怨并且不创建记录。我知道:attr_readonly可以用来在UPDATE中没有指定列,但有没有办法告诉ActiveRecord它不应该为INSERT指定它?

1 个答案:

答案 0 :(得分:2)

你可以: 在创建对象之前,请从对象中手动删除该属性。

  before_create(:remove_attribute)

  private

  def remove_attribute
    @attributes.delete('unwanted_attribute')
  end

请注意,这会完全从当前删除属性 宾语。如果您需要访问已删除的属性 创建记录后,需要重新加载记录。