Rails多态关联使用它的多个属性

时间:2018-12-03 18:43:31

标签: ruby-on-rails polymorphism

我有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开发中的常见问题?!

1 个答案:

答案 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表中。