直接のbelongs_toなしで、一種の「belongs_to :through」関連付けを設定するにはどうすればよいですか? 質問する

直接のbelongs_toなしで、一種の「belongs_to :through」関連付けを設定するにはどうすればよいですか? 質問する

「belongs_to :through」が有効ではないことはわかっています。これは、私が達成したいことを表現するための試みにすぎません。少しだけ我慢してください...

私が持っているのは次のものです:

class League
  has_many :divisions
end

class Division
  belongs_to :league
  has_many :teams
end

class Team
  belongs_to :division
  has_many :players
end

class Player
  belongs_to :team
end

さて、「野球カード」ビューフォームを作成するには、次のものが必要です。

name
team.name
team.division.name
team.division.league.name

では、「belongs_to :through」関連付けを設定して、「team.」プレフィックスなしで「players_controller」から「division.name」に直接アクセスする方法はありますか? 「player」から「division」までの多くの列にアクセスする必要があるため、それらの列に「直接」アクセスする方法を探しています。

1 つのオプションは、「players」テーブルに「division_id」列を含めることですが、データ選択機能が適切に処理されない場合に不整合が発生する可能性があるため、リレーショナル データ モデルが壊れる可能性があると言われています (例: プレーヤー A はディビジョン A のチーム A に所属していますが、プレーヤー A の division_id 列はディビジョン B に設定されています)。

「シンボリック リンク」を作成することは可能ですか? たとえば、「division」が「team.division」を参照し、「league」が「team.division.league」を参照するようになりますか?

それとも、毎回フルパスを使用するのが唯一の真の選択肢なのでしょうか?

誰かが助けてくれるといいですね。

ベストアンサー1

モデル クラスでデリゲートを使用します。

class Team < ActiveRecord::Base
  belongs_to :division
  has_many :players

  delegate :league, to: :division
end

参照:http://api.rubyonrails.org/classes/Module.html#メソッドiデリゲート

おすすめ記事