小编nit*_*sas的帖子

与验证的多态关联[甚至可能??]

我想知道我是否可以拥有多态关联和存在验证

假设我有一个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天内一直在努力解决这一切.让我们看看你们有什么想法?**

validation activerecord ruby-on-rails-3

1
推荐指数
1
解决办法
1921
查看次数

标签 统计

activerecord ×1

ruby-on-rails-3 ×1

validation ×1