0

ミュージシャン、開発者、医師の3つのモデルがあり、それぞれに名前、姓、誕生日、メールアドレスなどの共通の属性がありますが、ミュージシャン(楽器、バンド)、開発者(言語、SO)などの特定の属性があります。と医師(ライセンス、クリニック)。

私のアプローチは次のようなものです。

class Person < ActiveRecord::Base
    belongs_to :general, :polymorphic => true
end

class Musician < ActiveRecord::Base
    has_one :person, :as => general
end

class Developer < ActiveRecord::Base
    has_one :person, :as => general
end

class Doctor < ActiveRecord::Base
    has_one :person, :as => general
end

問題は、この種のモデルの関係は、ポリモーフィックな関連付けのためにパフォーマンスに影響を与えるのか、それとも検討すべきより良い解決策があるのか​​ということです。

4

1 に答える 1

2

はい、ポリモーフィックアソシエーションはパフォーマンスに影響します。時にはポジティブに、時にはネガティブに、すべてアプリケーションの使用方法に依存します。

あなたが関係して提示した場合に関しては、私はポリモーフィックな関連付けを使用しませんでした。名前、姓、誕生日、メールアドレスなどの共通の属性を持つ3つのモデルが、すべて3つのモデルに含まれています。ミュージシャンの名前を知りたい場合は、ミュージシャンテーブルでデータベースを1回呼び出すだけでよいため、これはより有利です。多態的な関連付けの場合、MusicianテーブルとPersonテーブルに2つのデータベース呼び出しが必要です。

于 2012-10-23T22:36:27.813 に答える