0

Order、Address、および User モデルがあります。注文には、請求先住所と配送先住所を含めることができます。ユーザーは、多数の保存済みアドレスを持つことができます。すべてに Address モデルを使用することは理にかなっています。私の懸念は、注文と請求先/配送先住所の関係です。

これがポリモーフィックな関連付けで機能するかどうかはわかりません。

class Order
  has_one :billing_address,  as: :addressable, polymorphic: true
  has_one :shipping_address, as: :addressable, polymorphic: true
end

class User
  has_many :addresses, as: :addressable, polymorphic: true
end

class Address
  belongs_to :addressable, polymorphic: true
end

これを正しくモデリングしていますか?Railsでこの問題を解決するにはどうすればよいでしょうか?

Orderbelongs_to :billing_addressと を逆にすることもできますが、それは Address モデルにshipping_address冗長性があることを意味します。user_id

4

3 に答える 3

0

また、単一テーブルの継承をミックスに追加する必要があります。BillingAddress と ShippingAddress で Address をサブクラス化し、Order モデルの関連付けを適切に微調整すれば問題ありません。

必ずテストしてください。polymorphic+sti が間違ったテーブル型を返す奇妙なケースがいくつかあります (またはありました)。私の記憶では、トップレベルのアドレスを持たないように、ユーザーが多く持つことができる MailingAddress も必要になるかもしれません。

于 2013-07-24T16:17:03.097 に答える