ActiveRecord只保存nil属性

时间:2018-04-19 04:18:32

标签: ruby-on-rails ruby activerecord rails-activerecord

我在生产环境中使用Rails 4.2.4和Ruby 2.3.1。 有时,在保存has_many关系时,记录将保存到数据库,并将所有属性设置为nil。我在本地环境中无法复制这种情况,但它经常出现在生产环境中。

class Transaction
  has_many :transaction_lines, foreign_key: "transaction_id", autosave: false
  accepts_nested_attributes_for :transaction_lines
end

class TransactionLine
  belongs_to :entry, :foreign_key => 'transaction_id', :class_name => 'Transaction'
end

以下是已保存属性的示例:

enter image description here

1 个答案:

答案 0 :(得分:1)

has_many(name,scope = nil,options = {},& extension)

...

<强>:自动保存

如果为true,则在保存父对象时,始终保存关联对象或在标记为销毁时将其销毁。如果为false,则永远不要保存或销毁关联的对象。默认情况下,仅保存作为新记录的关联对象。此选项实现为before_save回调。因为回调是按照定义的顺序运行的,所以可能需要在任何用户定义的before_save回调中显式保存关联的对象。

请注意,accepts_nested_attributes_for设置:自动保存为真。

的ActiveRecord ::协会:: ClassMethods