Как я могу использовать помощник ActiveRecord accepts_nested_attributes_for в ассоциации has_many: through при добавлении атрибутов в таблицу соединения?
Например, скажем, у меня есть модель Team:
class Team < ActiveRecord::Base
role = Role.find_by_name('player')
has_many :players,
:through => :interactions,
:source => :user,
:conditions => ["interactions.role_id = ?", role.id] do
class_eval do
define_method("<<") do |r|
Interaction.send(:with_scope, :create => {:role_id => role.id}) { self.concat r }
end
end
end
end
Команда имеет от_мани players
до interactions
, поскольку пользователь может занимать несколько ролей (игрок, менеджер и т. Д.).
Как я могу использовать accepts_nested_attributes_for, одновременно добавляя атрибуты в таблицу соединений?
Если у меня есть существующая запись команды team
и существующая запись пользователя user
, я могу сделать что-то вроде этого:
team.players << user
team.players.size
=> 1
Но если я создам новую команду свложенный игрок:
team = Team.create(:name => "New York Lions",
:players_attributes => [{:name => 'John Doe'}])
team.players.size
=> 0
В последнем примере создаются команда, пользователь и записи о взаимодействии (и у команды есть пользователь посредством взаимодействий), но атрибут Interactions.role_id не установлен.здесь.