2016-09-09 5 views
0

Ich habe folgende Modelle:Schienen verschachtelte Attribute zu schaffen, aber nicht aktualisieren und Löschen von nicht

class Company < ActiveRecord::Base 
    has_and_belongs_to_many :people 
    has_many :companies_people 

    accepts_nested_attributes_for :companies_people, allow_destroy: true, reject_if: :all_blank 
end 

class CompaniesPerson < ActiveRecord::Base 
    belongs_to :company 
    belongs_to :person 
    belongs_to :company_role 
end 

class Person < ActiveRecord::Base 
end 

class CompanyRole < ActiveRecord::Base 
end 

und ich versuche, zusammen mit Company Objekt companies_people zugehörige Objekte ist es zu aktualisieren. Das Problem, mit dem ich konfrontiert bin, ist, dass ich neue companies_people Objekte erstellen kann, aber bestehende nicht aktualisieren oder entfernen kann. Und was ist am aufregendsten ist, dass es keine andere Frage über nicht erlaubt oder fehlt :id und :_destroy params - Ich habe diese sicher eingerichtet, aber immer noch nicht können noch eine bestehende Assoziation zu aktualisieren oder zu löschen.

Eg. dieser Aufruf, die einen Zweck der Aktualisierung company_role_id1-2 hat wird völlig ignoriert:

Company.first.update_attributes(companies_people_attributes: [{id: 1, person_id: 1, company_role_id: 2}]) 

ps. mit Rails getestet 4.2.4

+0

Wenn das Problem bereits gelöst ist, warum die Frage stellen? –

+0

@ Deepak, um meine Erfahrung zu teilen, die jemand mehrere Stunden seines Lebens retten kann. Irgendein Problem damit? – trushkevich

Antwort

0

Es schien, dass es aufgrund dieser Assoziation Erklärung geschieht:

has_and_belongs_to_many :people 

ich diese Beziehung als HABTM zunächst definiert hatte, aber später, wie es geschieht oft musste ich Zugriff auf die bekommen Join Tabelle und erstellt ein entsprechendes Modell CompaniesPerson, aber nicht aktualisiert Association zu arbeiten über has_many through. Und nun entdeckte ich, dass die Änderung der oben genannten Erklärung zu

has_many :people, through: :companies_people 

oder einfach nur völlig es aus behebt das Problem mit verschachtelten Attributen nicht aktualisiert und nicht das Löschen zu kommentieren. Wow, ziemlich unerwartet.

Verwandte Themen