¿Cómo puedo usar accept_nested_attributes_for helper de ActiveRecord en una asociación has_many: through al agregar atributos a la tabla de unión?accept_nested_attributes_for a través de la tabla de unión con atributos en la combinación
Por ejemplo, dicen que tengo un modelo del equipo:
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
El equipo has_many players
través interactions
, ya que un usuario puede ocupar varios roles (jugador, manager, etc.).
¿Cómo puedo usar accepts_nested_attributes_for al mismo tiempo que agrego atributos a la tabla de unión?
Si tengo un récord del equipo existente team
y un registro de usuario existente user
, puedo hacer algo como esto:
team.players << user
team.players.size
=> 1
Pero si creo un nuevo equipo con un jugador anidada:
team = Team.create(:name => "New York Lions",
:players_attributes => [{:name => 'John Doe'}])
team.players.size
=> 0
En ese último ejemplo, se crean los registros de equipo, usuario e interacción (y el equipo tiene al usuario a través de interacciones), pero el atributo interactions.role_id no se establece aquí.
¿Alguna vez resolvió este problema? –
la respuesta a su pregunta se puede encontrar en esta publicación: http://stackoverflow.com/questions/2182428/rails-nested-form-with-has- many-through-how-to-edit-attributes-of-join -modelo –