Mam problem z aktualizacją kolumny JSON szyn w modelu.Kolumna Postgres JSON aktualizująca poszczególne klucze/atrybuty za pomocą formularza
Mam model OrderItem z kolumną: options z typem danych Postgres Json.
Mam formularz, w którym próbuję tylko zaktualizować dwa atrybuty w tej kolumnie JSON. Jednak po uruchomieniu akcji aktualizacji z kontrolera resetuje ona całą kolumnę opcji tylko do pól w formularzu, a nie tylko aktualizuje dwa poszczególne atrybuty. Czy to błąd? Jestem na Railsach 4.2.1 iz tego co przeczytałem powinno działać, i mogę ręcznie aktualizować poszczególne atrybuty w konsoli rails.
W moim kontrolera:
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
Moja forma:
<%= 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 %>
Gdy ten formularz jest składany nie aktualizować poszczególne atrybuty. Resetuje całą kolumnę json tylko do tych dwóch atrybutów
Form Data
utf8:✓
_method:patch
order_item[quantity]:2
order_item[options][size]:5
order_item[options][esp]:no
W konsoli mogę ręcznie aktualizować atrybuty łatwo ...
o = OrderItem.last
o.options["esp"] = "yes"
o.save
#PERSISTS!
byłaś kiedykolwiek w stanie znaleźć rozwiązanie tego problemu? –