Birleştirme tablosuna öznitelikler eklerken birleþme yoluyla ActiveRecord'un accepts_nested_attributes_for yardımcısını bir has_many'de nasıl kullanabilirim? Örneğin joins_nested_attributes_for birleştirme tablosundaki birleştirme tablosunu kullanarak
, bir takım modeli var ki: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
takım has_many interactions
aracılığıyla players
, bir kullanıcı birden rolleri (oyuncu, yönetici, vs.) işgal edebilir çünkü.
Birleştirme tablosuna öznitelikleri eklerken aynı zamanda accepts_nested_attributes_for'u nasıl kullanabilirim? Mevcut bir takım rekoru team
ve varolan kullanıcı kaydını user
varsa
, böyle bir şey yapabilirsiniz:
team = Team.create(:name => "New York Lions",
:players_attributes => [{:name => 'John Doe'}])
team.players.size
=> 0
:
team.players << user
team.players.size
=> 1
Ama iç içe bir oyuncu ile yeni bir ekip oluşturmak eğer
Bu son örnekte, ekip, kullanıcı ve etkileşim kayıtları oluşturulur (ve ekibin etkileşimleri aracılığıyla kullanıcıya sahip olması gerekir), ancak interactions.role_id özniteliği burada ayarlanmamıştır.
Bu sorunu çözdünüz mü? –
sorunun cevabını şu yayında bulabilirsiniz: http://stackoverflow.com/questions/2182428/rails-nested-form-with-has-many-through-how-to-edit-attributes-of-join -model –