I\'m creating an AuditLog observer that watches over several models.
I\'d like the observer to have an after_create, which creates a JSON object that is stored in a data
Take a look at this: http://github.com/laserlemon/vestal_versions
If it's not what you're looking for, it will at least show you it's done.
Current versions of rails support json serialisation out of the box. Define your field as a string (or text) in the migration and then:
class Foo < ActiveRecord::Base
serialize :field, JSON
end
bar = Foo.new
bar.field = [1,2,3]
bar.save
First, definitely check out ActiveRecord serialize and see if it does what you need: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-serialize
However, if you need JSON specifically (serialize uses YAML by default), then you can always fake it by hand.
You can simply build a hash in Ruby and then call to_json
on it before assigning it to your model attribute.
data = { 'photoid' => 123, 'photoname' => "asdasd", 'creator_id' => "asdasd" }
myrecord.stored_data = data.to_json
myrecord.save