我在生产环境中使用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
以下是已保存属性的示例:
答案 0 :(得分:1)
has_many(name,scope = nil,options = {},& extension)
...
<强>:自动保存强>
如果为true,则在保存父对象时,始终保存关联对象或在标记为销毁时将其销毁。如果为false,则永远不要保存或销毁关联的对象。默认情况下,仅保存作为新记录的关联对象。此选项实现为before_save回调。因为回调是按照定义的顺序运行的,所以可能需要在任何用户定义的before_save回调中显式保存关联的对象。
请注意,accepts_nested_attributes_for设置:自动保存为真。
的ActiveRecord ::协会:: ClassMethods