0

私は競馬アプリケーションに取り組んでおり、STI を利用して馬のつながりをモデル化しようとしています。馬のコネクションは、所有者、調教師、騎手で構成されています。時間の経過とともに、接続はさまざまな理由で変化する可能性があります。

  1. 馬は別の所有者に売却されます
  2. オーナーが調教師や騎手を交代
  3. 馬は新しい所有者によって主張されています

現在のところ、次の表でこれをモデル化しています。

  1. 接続 (結合テーブル)
  2. 利害関係者 (利害関係者には、ジョッキー、トレーナー、所有者の 3 つのサブクラスがあります)

ここに私のクラスと協会があります:

    class Horse < ActiveRecord::Base
    has_one :connection
    has_one :owner_stakeholder, :through => :connection
    has_one :jockey_stakeholder, :through => :connection
    has_one :trainer_stakeholder, :through => :connection
end

    class Connection < ActiveRecord::Base
    belongs_to :horse
    belongs_to :owner_stakeholder
    belongs_to :jockey_stakeholder
    belongs_to :trainer_stakeholder
end

class Stakeholder < ActiveRecord::Base
    has_many :connections
    has_many :horses, :through => :connections
end

class Owner < Stakeholder
  # Owner specific code goes here.
end

class Jockey < Stakeholder
  # Jockey specific code goes here.
end

class Trainer < Stakeholder
  # Trainer specific code goes here.
end

データベース側で、接続テーブルに Type 列を挿入しました。

これを正しくモデル化しましたか。より良い/よりエレガントなアプローチはありますか? フィードバックをお寄せいただきありがとうございます。

ジム

4

2 に答える 2

2

Rails プロジェクトでの STI の使用については、このドキュメントを参照してください。接続について - ポリモーフィック アソシエーションが最善の策です。

于 2010-03-21T18:46:42.117 に答える
0

最初に言っておきますが、私は性感染症が何であるかを知りません。略語は何の略ですか?

接続モデルが必要な理由がわかりません。ドメインについての私の理解では、接続をそのままにしておくことができ、:through を使用する必要はありません。これにより、よりシンプルになり、パフォーマンスが向上します。接続モデルが追加する機能はありません。

于 2010-03-21T18:16:11.607 に答える