Ich habe ein Projektmodell, das verschachtelte Attribute für Task akzeptiert.validates_uniqueness_of in zerstörten verschachtelten Modellschienen
class Project < ActiveRecord::Base
has_many :tasks
accepts_nested_attributes_for :tasks, :allow_destroy => :true
end
class Task < ActiveRecord::Base
validates_uniqueness_of :name end
Eindeutigkeitsprüfung im Task-Modell verursacht ein Problem beim Aktualisieren des Projekts.
In Bearbeitung des Projekts lösche ich eine Aufgabe T1 und dann eine neue Aufgabe mit dem gleichen Namen T1 hinzufügen, Eindeutigkeit Validierung beschränkt das Speichern von Project.
params-Hash-Look etwas wie
task_attributes => { {"id" =>
"1","name" => "T1", "_destroy" =>
"1"},{"name" => "T1"}}
Validierung auf Aufgabe erfolgt vor die alte Aufgabe zu zerstören. Daher schlägt die Validierung fehl. Eine Idee, wie man validiert, dass die Aufgabe nicht zerstört wird?
Nur neugierig Warum nicht aktualisieren Sie Ihre alte Aufgabe, anstatt alte zu löschen und neue Aufgabe mit dem gleichen Namen erstellen. – Salil
Sie meinen, ich muss alte Aufgaben durchlaufen und prüfen, ob es eine alte Aufgabe mit dem gleichen Namen wie eine neue Aufgabe gibt, die aber als zerstört markiert ist, und dann nur diese alte Aufgabe aktualisieren? – arun
Arun ... ist dies nur ein Testfall (Hinzufügen einer Aufgabe mit dem gleichen Namen wie eine andere Aufgabe, die Sie löschen) oder machen Sie dies bei jeder Bearbeitung, dh Aufgaben löschen und neu erstellen. – concept47