「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デリゲート