ruby on rails - postgres - Rails 3-Cómo crear un objeto JSON para almacenar en la base de datos
rails json column (3)
Estoy creando un observador AuditLog que vigila varios modelos.
Me gustaría que el observador tenga un after_create, que crea un objeto JSON que se almacena en una columna de la base de datos. Contendrá datos como {photoid: 123, photoname: "asdasd", creator_id: "asdasd"} etc ...
En Rails, ¿cómo creo este tipo de objeto JSON y luego cómo lo inserto en la base de datos junto con otros campos que no son JSON?
Gracias
Eche un vistazo a esto: http://github.com/laserlemon/vestal_versions
Si no es lo que estás buscando, al menos te mostrará que está hecho.
Las versiones actuales de los rieles admiten la serialización json fuera de la caja. Defina su campo como una cadena (o texto) en la migración y luego:
class Foo < ActiveRecord::Base
serialize :field, JSON
end
bar = Foo.new
bar.field = [1,2,3]
bar.save
Primero, definitivamente revise ActiveRecord serialize y vea si hace lo que necesita: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-serialize
Sin embargo, si necesita JSON específicamente (serializar usa YAML por defecto), entonces siempre puede falsificarlo a mano.
Simplemente puede crear un hash en Ruby y luego llamar a to_json
en él antes de asignarlo a su atributo modelo.
data = { ''photoid'' => 123, ''photoname'' => "asdasd", ''creator_id'' => "asdasd" }
myrecord.stored_data = data.to_json
myrecord.save