我有一个带有计算列的数据库视图,我用它来支持Rails模型。 model.create生成的INSERT INTO语句尝试将该列设置为null,这会导致数据库抱怨并且不创建记录。我知道:attr_readonly可以用来在UPDATE中没有指定列,但有没有办法告诉ActiveRecord它不应该为INSERT指定它?
答案 0 :(得分:2)
你可以: 在创建对象之前,请从对象中手动删除该属性。
before_create(:remove_attribute)
private
def remove_attribute
@attributes.delete('unwanted_attribute')
end
请注意,这会完全从当前删除属性 宾语。如果您需要访问已删除的属性 创建记录后,需要重新加载记录。