【问题标题】:Prevent NULL for active record INSERT?防止活动记录插入为 NULL?
【发布时间】:2011-10-17 21:12:39
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

      before_create(:remove_attribute)
    
      private
    
      def remove_attribute
        @attributes.delete('unwanted_attribute')
      end
    

    请注意,这会从当前属性中完全删除该属性 目的。如果您需要在拥有后访问已移除的属性 创建了记录,需要重新加载记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      • 2023-02-03
      • 2023-03-18
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多