Ich habe Probleme beim Aktualisieren einer Rails JSON-Spalte in einem Modell.Postgres JSON-Spalte Aktualisieren einzelner Schlüssel/Attribute mit Formular
Ich habe ein OrderItem-Modell mit einer: Optionen-Spalte mit dem postgres json-Datentyp.
Ich habe ein Formular, wo ich nur versuche, zwei Attribute in dieser JSON-Spalte zu aktualisieren. Wenn ich jedoch die Aktualisierungsaktion von meinem Controller aus führe, wird die gesamte Optionsspalte nur auf die Felder in meinem Formular zurückgesetzt, anstatt nur die zwei einzelnen Attribute zu aktualisieren. Ist das ein Fehler? Ich bin auf Rails 4.2.1 und von was ich gelesen habe, sollte dies funktionieren, und ich kann einzelne Attribute in der Rails-Konsole manuell aktualisieren.
In meinem Controller:
def update
@order_item.update(order_item_params)
respond_with(:update)
end
private
def order_item_params
params.require(:order_item).permit(:product_id, :quantity, options:[:esp, :size])
end
Meine Form:
<%= f.fields_for :options do |option| %>
<%= option.label :size %>
<%= option.select :size, options_for_select((5..13), item.options["size"]) %>
<%= option.select :esp, options_for_select(["yes","no"], item.options["esp"]) %>
<% end %>
Wenn das Formular nicht die einzelnen Attribute aktualisieren nicht vorgelegt. Es setzt die gesamte json Spalte nur auf diese beiden Attribute
Form Data
utf8:✓
_method:patch
order_item[quantity]:2
order_item[options][size]:5
order_item[options][esp]:no
In Konsole ich manuell leicht Attribute aktualisieren kann ...
o = OrderItem.last
o.options["esp"] = "yes"
o.save
#PERSISTS!
waren Sie jemals in der Lage, eine Lösung für diese zu finden? –