Rails Validierung für eine has_many-Assoziation

Ich bin Probleme mit Validierungen auf einer has_many-Beziehung, bei der die Kinder vorhanden, aber die Eltern nicht. Jedoch beim erstellen/speichern des übergeordneten Objekts, möchte ich sicherstellen, dass bestimmte Kinder (mit bestimmten Parametern) bereits gespeichert wurden.

Es ist ein Parent Objekt, das has_many Child Objekte. Die Child Objekte sind persistent in die Datenbank erste, und damit haben keine Referenz auf das übergeordnete Element. Die Vereins-Struktur:

Parent
  - has_many :children 

Child
  - someProperty: string
  - belongs_to: parent

Gibt es zum Beispiel drei Kind-Objekte:

#1 {someProperty: "bookmark", parent: nil}
#2 {someProperty: "history", parent: nil }
#2 {someProperty: "window", parent: nil }

Eines Elternteils ist nur dann gültig, wenn es enthält die untergeordneten Objekte mit someProperty history und window.

Ich bin einrichten die Eltern in der Steuerung als:

p = Parent.new(params[:data])
for type in %w[bookmark_id history_id window_id]
    if !params[type].blank?
        p.children << Child.find(params[type])
    end
end
//save the parent object p now
p.save!

Wenn die Kinder zugeordnet sind, die Eltern mit << Sie werden nicht sofort gespeichert wie die Eltern-id ist nicht vorhanden. Und für die Eltern, um gerettet zu werden, es müssen mindestens diese 2 Kinder. Wie könnte ich dieses problem lösen? Jeder input ist willkommen.

InformationsquelleAutor Anurag | 2010-02-03
Schreibe einen Kommentar