我有Address类,我需要在其他多个模型中使用它,在某些模型中,我需要将其用于多个属性。我到目前为止所做的设置:
class User
has_one :pickup_address, class_name: 'Address', as: :location, dependent: :destroy
has_one :delivery_address, class_name: 'Address', as: :location, dependent: :destroy
end
class Address
belongs_to :location, polymorphic: true
end
Address类还将在以后的其他模型中使用,例如:
class ServiceProvider
has_one :address, as: :location
end
我现在遇到的问题是User类,因为它使用相同的多态地址模型具有多个属性。在构建模型时,它允许设置收货地址和交付地址,但是保存后,当我尝试从db中获取它时,两个字段都具有用于交付地址的相同(后期)地址对象。
据我所知,这是因为模型仅保存一个多态ID,而不是多个。
我的问题是应如何正确处理此类关联?我认为这是Web开发中的常见问题?!
答案 0 :(得分:1)
我认为在您的用户模型中,您应该使用belongs_to
:
belongs_to :pickup_address, :class_name => "Address", :foreign_key => "pickup_address_id"
belongs_to :delivery_address, :class_name => "Address", :foreign_key => "delivery_address_id"
这意味着,地址的ID将存储在users表中。