我有一个带有计算列的数据库 View ,我用它来支持 Rails 模型。 model.create 生成的 INSERT INTO 语句试图将该列设置为 null,这会导致数据库出错并且不会创建记录。我知道 :attr_readonly 可用于在 UPDATE 中不指定该列,但是有没有办法告诉 ActiveRecord 它也不应该为 INSERT 指定它?
最佳答案
你可以: 在创建对象之前从对象中手动删除该属性。
before_create(:remove_attribute)
private
def remove_attribute
@attributes.delete('unwanted_attribute')
end
请注意,这会将属性从当前的 目的。如果您需要在拥有后访问已删除的属性 创建了记录,需要重新加载记录。
关于ruby-on-rails - 防止事件记录 INSERT 为 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7799626/