【发布时间】:2012-10-14 14:07:26
【问题描述】:
我有两个模型,Address 和 User:
class Address < ActiveRecord::Base
belongs_to :resource, polymorphic: true
end
class User < ActiveRecord::Base
has_one :contact_address, class_name: "Address", as: :resource
has_one :billing_address, class_name: "Address", as: :resource
end
问题是如果我为User 创建billing_address,它将自动设置为contact_address,因为addresses 表没有指定不同的resource_type(两者都是User)。
您能给我一些关于如何设置模型的建议吗?
谢谢
【问题讨论】:
-
据我了解,您不需要做多态关联。您可以执行类似用户 has_many :contact_address 的操作,并在地址表中有一个标志来表示该地址也是帐单地址还是只是联系地址。如果这是您正在寻找的,我可以详细说明。
-
是的,这可能是一种方式,但我需要这是多态关联:(
-
无论您是否使用多态,当前模式在任何情况下都不起作用......现在如果您不使用多态关联,那么问题将再次存在,因为将触发的 SQL 查询后端将是相同的,因为您指定了相同的资源和类...
标签: ruby database ruby-on-rails-3 database-design activerecord