注意:这个问题是由我关于使用accepts_nested_attributes_for 的另一个问题产生的。如果需要,您可以参考该问题以获取更多上下文。
我相信这个问题最好用一个简单的例子来解释:
class Foo < ActiveRecord::Base
has_many :bars, inverse_of: :foo
end
class Bar < ActiveRecord::Base
validates :foo_id, presence: true
belongs_to :foo, inverse_of: :bars
end
f = Foo.new()
=> #<Foo id: nil, created_at: nil, updated_at: nil>
b = f.bars.build()
=> #<Bar id: nil, foo_id: nil, created_at: nil, updated_at: nil>
f.save!
=> ActiveRecord::RecordInvalid: Validation failed: Bars foo can't be blank
有没有简单的方法来解决这个问题?我知道我可以f
先 save 然后 build b
,但我的情况比这个例子复杂一点(参见我上面提到的问题),如果可能的话,我宁愿避免这种情况。