2010-09-21 17 views
5

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.

+0

Bu sorunu çözdünüz mü? –

+1

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 –

cevap

2
class Team < ActiveRecord::Base 
    accepts_nested_attributes_for :interactions 

class Interaction < ActiveRecord::Base 
    accepts_nested_attributes_for :players 


team = Team.create(:name => "New York Lions", :interactions_attribues => [{ 
        :players_attributes => [{:name => 'John Doe'}]}]) 

ben kontrol ettik diziler gerekebilir böylece oluşturmak ve biraz berbat ama fikir olsun sağlamalarının. Ekip ve Etkileşim modellerinde hem accepts_nested_attributes hem de gerekir.

İlgili konular