Подтвердить что ты не робот

Rails 3 - Как создать объект JSON для хранения в базе данных

Я создаю наблюдателя AuditLog, который следит за несколькими моделями.

Я хотел бы, чтобы наблюдатель имел after_create, который создает объект JSON, который хранится в столбце базы данных. Он будет содержать такие данные, как {photoid: 123, photoname: "asdasd", creator_id: "asdasd" } и т.д.

В Rails, как мне создать этот тип объекта JSON, а затем как его вставить в БД вместе с другими полями, отличными от JSON?

Спасибо

4b9b3361

Ответ 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