новинка для рельсов и пытается выработать самый «рельсный» способ реализовать следующее.has_many через отношения с промежуточной моделью
Ниже:
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
captain'`
Однако, я могу установить его так:
t.team_memberships[4][:captain] = true
Но это только кажется неправильным.
Учитывая вы должны увидеть, что я пытаюсь достичь, это:
A) Лучший способ подойти к этой задаче - если да, то есть ли способ, чтобы получить в и установить капитан атрибутов непосредственно через игрок (если это имеет смысл)
или
B) есть лучше, более «railsy» подход, который я пропускаю.
Спасибо за ответ - тем не менее, я знаю, почему ассоциация через 'team_memberships' работает - я надеялся, что будет лучший способ определить команды <-> отношения игроков ... будут читать ссылки, хотя я уже через них уже несколько раз уже !! – BenjiBoyWick