我想知道我是否可以拥有多态关联和存在验证
假设我有一个business模型和一个address模型,并且address是多态的
class Business< ActiveRecord::Base
has_one :address, as: :addressable
validates_presence_of :address
end
class Address< ActiveRecord::Base
belongs_to :addressable, polymorphic: true
end
Run Code Online (Sandbox Code Playgroud)
有可能进行验证validates_presence_of :address吗?使用此设置创建对象时遇到问题.
我们首先要创建一个像这样的业务对象
b = Business.new(name: "Hello23")
b.address = Address.new(street: "House 43 BCD")
b.save!
Run Code Online (Sandbox Code Playgroud)
这不起作用.它给出了undefined method constantize for 0:Fixnum一个错误,因为当它试图将地址保存到db时,它找不到可寻址的id,因为业务尚未保存并且没有为其分配id .
但是从另一方面来说也是不可能的 - 如果没有地址我就无法保存业务.
处理这种情况的最佳方法是什么?
****除此之外,如果我还想在地址方面进行验证,就像这样**
validates_presence_of :addressable
Run Code Online (Sandbox Code Playgroud)
我已经在这2天内一直在努力解决这一切.让我们看看你们有什么想法?**