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

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

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

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

Спасибо

Ответы [ 3 ]

62 голосов
/ 03 июня 2012

Текущие версии рельсов поддерживают сериализацию JSON из коробки. Определите свое поле как строку (или текст) в миграции, а затем:

class Foo < ActiveRecord::Base
  serialize :field, JSON
end

bar = Foo.new
bar.field = [1,2,3]
bar.save
10 голосов
/ 01 октября 2010

Во-первых, обязательно проверьте сериализацию ActiveRecord и посмотрите, делает ли она то, что вам нужно: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-serialize

Однако, если вам нужен JSON специально (по умолчанию в serialize используется YAML), вы всегда можете подделать его вручную.

Вы можете просто создать хеш в Ruby и затем вызвать to_json, прежде чем присваивать его атрибуту модели.

data = { 'photoid' => 123, 'photoname' => "asdasd", 'creator_id' => "asdasd" }
myrecord.stored_data = data.to_json
myrecord.save
0 голосов
/ 01 октября 2010

Взгляните на это: http://github.com/laserlemon/vestal_versions

Если это не то, что вы ищете, это по крайней мере покажет вам, что это сделано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...