ruby-on-rails - 防止事件记录 INSERT 为 NULL?

标签 ruby-on-rails database activerecord attributes insert

我有一个带有计算列的数据库 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/

相关文章:

ruby-on-rails - 利用 Nginx 的浏览器缓存问题

ruby-on-rails - 我们如何设计 Dynamo 数据库以保持两个实体的关系

sql - Azure SQL 数据库备份菜单不可用

sql - 在 Rails ActiveRecord 模型中,使用 after_initialize 回调是一个非常糟糕的主意吗?

mysql - 无法批量分配 protected 属性 : time_zone

ruby-on-rails - Rails 无法写入数据库中的序列化数组字段

ruby-on-rails - 具有多面GeoPoint搜索的 Elasticsearch

ruby-on-rails - Rails 功能测试 assert_select 表单输入值?

ios - firebase setValue 方法中缺少值阻止设置数据库中的其他值

sql - 与内连接相反