Rails アプリで STI を使用する適切な時期はいつですか? 多くの読書 (この優れた Railscastを含む) の後、私は自分のニーズに最適なアプローチが何であるかまだわかりません。
この (不自然な) 例は、私のジレンマを示しています。
User クラスが、医師や患者を含むいくつかのサブクラスに分類できるとしましょう。これらは単純な役割ではなく、重要なデータとロジックの違いがあります。
Doctor には、特定のデータベース フィールド (例: 資格、専門分野)、特定のビュー ロジック (例:if User.doctor? then
患者のリストの表示)、および特定のロジックと役割 (例: 患者の記録を管理できる) があります。
患者には、さまざまなデータベース フィールド (血液型など)、ビュー ロジック (if User.patient? then
治療リストの表示など)、およびロジック (予約を編集できるなど) があります。
医師と患者の両方:username, :email, :password
に共通のフィールドがあり、アプリの残りの部分全体でかなりの量のロジックがあります (例: User has_many :comments, :messages, etc
)。
私の読書から、患者と医師が異なる論理要件を持っているという事実は、STI が適切である可能性があることを示唆しています。ただし、データベース フィールドが異なる場合は、ポリモーフィックの方が優れたアプローチになる場合があります。
しかし....
ユーザーは、同時に医師と患者の両方になることができます。
この問題に対する「最善のアプローチ」はありますか?