【发布时间】:2012-05-28 07:35:22
【问题描述】:
我想知道我是否可以拥有多态关联以及存在验证
假设我有一个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
是否可以进行验证validates_presence_of :address?使用此设置创建对象时遇到问题。
假设首先我创建了一个这样的业务对象
b = Business.new(name: "Hello23")
b.address = Address.new(street: "House 43 BCD")
b.save!
这不起作用。它给出了一个undefined method constantize for 0:Fixnum 并且给出一个错误是有意义的,因为当它试图将地址保存到 db 时,它没有找到可寻址的 id,因为业务尚未保存并且没有分配识别它。
但从另一边也不可能 - 如果没有地址,我无法保存业务。
处理这种情况的最佳方法是什么?
****除此之外,如果我还想像这样在地址端进行验证怎么办**
validates_presence_of :addressable
我已经为此苦苦挣扎了大约 2 天。让我们看看你们有什么想法?**
【问题讨论】:
标签: ruby-on-rails-3 validation activerecord