Railsが初めてで、以下を実装するための最も「railsy」な方法を見つけようとしています。
下記のとおり:
class Team
has_many :team_memberships
has_many :players, through: :team_memberships
end
class TeamMembership
acts_as_list scope: :team_id
belongs_to :team
belongs_to :player
end
class Player
has_many :team_memberships
has_many :teams, through: team_memberships
end
私の TeamMembership モデルには追加の列position:integer
がcaptain:boolean
あり、wicket_keeper:boolean
(私がまだ何に取り組んでいるのか教えていただけますか.. :))
以下を考えると:
t = Team.first
p = Player.first(11)
t.players << p
これにより、TeamMembership モデルにプレーヤー オブジェクトが適切に取り込まれます。
私が試してみると:
t.players[4][:captain] = true
ActiveModel::MissingAttributeError: can't write unknown attribute
-キャプテン」で失敗します
ただし、次のように設定できます。
t.team_memberships[4][:captain] = true
しかし、これは間違っているように感じます。
私が達成しようとしていることを見る必要があるとすれば、これは次のとおりです。
A) このタスクにアプローチする最善の方法 - もしそうなら、プレイヤーから直接キャプテン属性を取得して設定する方法はありますか (それが理にかなっている場合)
また
B)私が見逃している、より優れた、より「レールシーな」アプローチはありますか。