accresents_nested_attributes_für die Validierung der untergeordneten Zuordnung fehlgeschlagen

Ich bin mit accepts_nested_attributes_for in einem meiner Rails-Modelle, und ich möchten, speichern Sie die Kinder nach dem erstellen der übergeordneten.

Form perfekt funktioniert, aber die Validierung fehlschlägt. Der Einfachheit halber stellen Sie sich Folgendes vor:

class Project < ActiveRecord::Base
  has_many :tasks
  accepts_nested_attributes_for :tasks
end

class Task < ActiveRecord::Base
  belongs_to :project

  validates_presence_of :project_id
  validates_associated :project
end

Und ich bin mit:

Project.create!(
  :name => 'Something',
  :task_attributes => [ { :name => '123' }, { :name => '456' } ]
)

Beim speichern des Projekt-Modell, die Validierung fehlschlägt, auf die Aufgaben, weil Sie nicht haben eine project_id (da das Projekt noch nicht gespeichert wurde).

Wie es scheint, Schienen nach dem Muster unten:

  • Validieren Projekt
  • Validieren Aufgaben
  • Projekt Speichern
  • Speichern Aufgaben

Das Muster sollte:

  • Validieren Projekt
  • Auf den Pass: Projekt Speichern und weiter...
  • Validieren Aufgaben
    • Auf Den Pass: Sparen Sie Aufgaben
    • Auf Fail: Projekt Löschen (rollback vielleicht?)

Also meine Frage hinausläuft: Wie kann ich die Schienen laufen die project_id= (oder Projekt=) - Methode und die überprüfung auf die Kinder (Aufgaben) NACH den übergeordneten (Projekt) gespeichert wurde, aber NICHT speichern Sie die übergeordneten (Projekt) - Modell, wenn jedes Kind (Aufgabe) ist ungültig?

Irgendwelche Ideen?

InformationsquelleAutor der Frage Ryan Townsend | 2009-06-01

Schreibe einen Kommentar