我不明白我有以下型号:
class Seller < ActiveRecord::Base
has_many :cars, :dependent => :destroy
end
class Car < ActiveRecord::Base
belongs_to :seller
# I have tried both with the validates existence gem:
validates :existence => {:allow_nil => false}
# And normally...
validates_presence_of :seller
end
但如果我执行以下操作,则无效:
seller = Seller.new()
seller.cars.build()
seller.save # I get => false @messages={:seller=>["does not exist"], :seller_id=>["does not exist"]}
我应该能做到这一点吗?
就像 - 它在保存母对象之前验证关联的模型 - 我没有定义validates_associated或类似的东西。
有任何线索吗?或者我得到了保存和验证所有错误的顺序?
答案 0 :(得分:1)
我过去遇到过这种情况,并使用“inverse_of”来解决它。您还需要“accepts_nested_attributes_for”。因此,在卖家中,您可能希望将代码更改为以下内容:
class Seller < ActiveRecord::Base
has_many :cars, :dependent => :destroy, :inverse_of => :seller
accepts_nested_attributes_for :cars
end
答案 1 :(得分:1)
Seller
不存在,因为它尚未保存在数据库中,它只在内存中,因此Car
不知道它需要知道的Seller's
id - 它必须将其添加到seller_id列。因此,您首先必须保存Seller
,并且您不需要Car
中的validates_presence_of:卖家电话。