Rails 3 - Как создать объект JSON для хранения в базе данных
Я создаю наблюдателя AuditLog, который следит за несколькими моделями.
Я хотел бы, чтобы наблюдатель имел after_create, который создает объект JSON, который хранится в столбце базы данных. Он будет содержать такие данные, как {photoid: 123, photoname: "asdasd", creator_id: "asdasd" } и т.д.
В Rails, как мне создать этот тип объекта JSON, а затем как его вставить в БД вместе с другими полями, отличными от JSON?
Спасибо
Ответы
Ответ 1
Текущие версии рельсов поддерживают сериализацию json из коробки. Определите свое поле в виде строки (или текста) в процессе миграции, а затем:
class Foo < ActiveRecord::Base
serialize :field, JSON
end
bar = Foo.new
bar.field = [1,2,3]
bar.save
Ответ 2
Во-первых, определенно проверьте сериализацию ActiveRecord и посмотрите, что она делает то, что вам нужно: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-serialize
Однако, если вам нужен JSON (сериализация использует YAML по умолчанию), вы всегда можете подделать его вручную.
Вы можете просто создать хэш в Ruby, а затем вызвать to_json
на нем, прежде чем назначать его вашему атрибуту модели.
data = { 'photoid' => 123, 'photoname' => "asdasd", 'creator_id' => "asdasd" }
myrecord.stored_data = data.to_json
myrecord.save
Ответ 3
Взгляните на это: http://github.com/laserlemon/vestal_versions
Если это не то, что вы ищете, это, по крайней мере, покажет вам это.