web-dev-qa-db-ja.com

Rails 3-データベースに格納するJSONオブジェクトを作成する方法

複数のモデルを監視するAuditLogオブザーバーを作成しています。

オブザーバーには、データベース列に格納されるJSONオブジェクトを作成するafter_createを用意してください。 {photoid:123、photoname: "asdasd"、creator_id: "asdasd"}などのデータが含まれます...

Railsでは、このタイプのJSONオブジェクトをどのように作成し、他のJSON以外のフィールドと一緒にDBに挿入するのですか?

ありがとう

31
AnApprentice

Railsサポートされているjsonシリアル化の現在のバージョン。移行でフィールドを文字列(またはテキスト)として定義してから、次のようにします。

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

bar = Foo.new
bar.field = [1,2,3]
bar.save
62
Matt Connolly

まず、間違いなく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
10
tfe