rails postgres generate example data column ruby-on-rails rails-postgresql hstore

ruby-on-rails - generate - save json data in postgres



¿Cómo puedo actualizar el valor de un registro de datos con Ruby on Rails 4.0.1/PostgreSQL Hstore? (3)

Estoy encontrando un problema extraño que debe ser un error del usuario por mi parte pero no puedo resolverlo.

Estoy usando Ruby 1.9.3-p194, Rails 4.01, PostgreSQL.

Tengo un modelo, Cliente, con una columna llamada datos que es un tipo hstore . Por alguna razón, no puedo actualizar la columna de datos (hstore) con ninguna nueva clave / valor ni puedo actualizar el valor de una clave existente. Puedo hacer una inserción y especificar cualquier clave / valor sin ningún problema.

ID del cliente: 1, primer nombre: "Marca", último nombre: "Prueba", datos: {"balance" => "0"}, created_at: "2013-11-27 14:39:09", updated_at: "2013- 11-27 14:39:09 "

c.data["balance"] = "100" c.save

(0.2ms) COMENZAR

(0.3ms) COMPROMISO => verdadero

Si hago un update_attributes, lo guarda.

c.update_attributes({:data => {"balance" => "343"}})

No veo ningún error o excepción cuando use c.save! . ¿Alguien tiene alguna idea?



Ok finalmente encontré una respuesta a mi pregunta. Resulta que es un error dentro de Rails 4.0.

"Error de ActiveRecord Hstore: no se puede actualizar una clave en el hash" https://github.com/rails/rails/issues/6127


Todavía necesitaba que esto funcionara ahora y no podía esperar a que se solucionara el error, así que aquí está mi solución:

c.data["balance"] = "100" c.data_will_change! c.save

... y se guardará en la base de datos!

El "attribute_name_will_change!" El método no está bien documentado y se puede encontrar en la introducción del módulo Active Model Dirty: http://api.rubyonrails.org/classes/ActiveModel/Dirty.html