複数のモデルを監視するAuditLogオブザーバーを作成しています。
オブザーバーには、データベース列に格納されるJSONオブジェクトを作成するafter_createを用意してください。 {photoid:123、photoname: "asdasd"、creator_id: "asdasd"}などのデータが含まれます...
Railsでは、このタイプのJSONオブジェクトをどのように作成し、他のJSON以外のフィールドと一緒にDBに挿入するのですか?
ありがとう
Railsサポートされているjsonシリアル化の現在のバージョン。移行でフィールドを文字列(またはテキスト)として定義してから、次のようにします。
class Foo < ActiveRecord::Base
serialize :field, JSON
end
bar = Foo.new
bar.field = [1,2,3]
bar.save
まず、間違いなく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