Angenommen, ich habe zwei Tabellen, trees
und apples
und eine verbundene Tabelle tree_apples
. Nehmen wir an, die Tabelle tree_apples
enthält einige wichtige Spalten mit den Namen rotten
(boolean) und branch
(int).Rails update_nested_attributes. HOw update falls vorhanden, create wenn nicht?
Say in der Steuerung für trees
, ich habe dies:
@tree.update_nested_attributes(tree_params)
und meine tree_params
Methode, dies wie folgt aussehen:
tree_apple_params: {
:apple_id,
:rotten,
:branch
}
Sagen Sie den Baum, dass ich die Aktualisierung bereits eine tree_apple mit einer ID hat von 3, das ist rotten: true
und branches: nil
und die eingehenden Parameter in diesen Controller, um den Zweig zu aktualisieren, hat Parameter, die wie folgt aussehen:
tree_apple_params: [{
apple_id: 3,
rotten: nil,
branch: 5
},
{
apple_id: 4,
rotten: nil,
branch: 6
},
...
]
Also ist es params zu erstellen oder zu aktualisieren eine Reihe von tree_apples
. Die Seite, von der die Parameter kamen, möchte den Zweig für tree_apple
aktualisieren, der auf apple_id
von 3 verweist, und für diesen tree_apple
gibt es keine Eingabe über den veralteten Zustand. Ich möchte nicht ein weiteres tree_apple
erstellen, das apple_id: 3
referenziert, das nil
für den faulen_state hat. Ich möchte das vorhandene tree_apple
aktualisieren. Also, für diese tree_apple
, würde ich es gerne finden, und dann Update es mit Zweig 5. Aber für alle anderen Parameter, die Äpfel, die nicht auf diesem Baum existieren, referenzieren möchte ich erstellen neu tree_apples
wenn die tree_apple
nicht existiert.
Gibt es eine Möglichkeit, dies zu tun? Gehört diese Logik als Callback in den Controller oder in das Modell?
@jwan haben, dass Ihr Problem lösen? – George