Railsのモデル間で優れたスキーマ/アソシエーションを構築するのには苦労しています。 「プレイヤー」には複数の「ピック」があり、各「ピック」は3つの「ライダー」で構成されています。複数のforeign_keyをモデルで管理しています
スキーマ要約:
player.rb:
class Player < ActiveRecord::Base
has_many :picks
end
pick.rb:
class Pick < ActiveRecord::Base
has_many :riders, :foreign_key => "rider1_id"
has_many :riders, :foreign_key => "rider2_id"
has_many :riders, :foreign_key => "rider3_id"
belongs_to :player
end
rider.rb
class Rider < ActiveRecord::Base
belongs_to :pick
end
は私が/私はコード内の団体のいくつかの基本的な理解が不足していますことを知っている感じ:
create_table players do |t|
t.string "name"
...
end
create_table picks do |t|
t.integer "player_id"
t.integer "rider1_id"
t.integer "rider2_id"
t.integer "rider3_id"
...
end
create_table riders do |t|
t.string "name"
...
end
を私が構築したモデル間の関連のいくつかを持っています上記。特に、私は "myPick.rider1.name"のようなことを言いたいと思います。私はまた、 "myRider.picks"のような特定のライダーを含むピックを見ることができます(しかし、これも可能であるかどうかはわかりません)。そして基本的には、ピックモデルに3つの「ライダー」外来キーを持たせるのが正しいとは思いません。
ご意見ありがとうございます。 乾杯、 ジャック
はい、意味があります。ありがとうございました。 – Jacques
ありがとうございます。基本的に、私は 'belongs_to'の構文が間違っていました。私はあなたが上に書いたものを少し修正しなければならなかった(恐らく私はまだRails 2 - 従来のプロジェクトを使用しているからかもしれないが)、私はそれに "belongs_to:rider1、:class_name => 'Rider'、:foreign_key =>:rider1_id '。私はまた、ライダーメソッドのアイデアが本当に好きで、1つの配列からすべてのライダーを操作できることも覚えています。どうもありがとうございました! – Jacques