Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3-如何创建要存储在数据库中的JSON对象_Ruby On Rails_Json_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails 3-如何创建要存储在数据库中的JSON对象

Ruby on rails Rails 3-如何创建要存储在数据库中的JSON对象,ruby-on-rails,json,ruby-on-rails-3,Ruby On Rails,Json,Ruby On Rails 3,我正在创建一个AuditLog观察者,它监视多个模型 我希望观察者有一个after_create,它创建一个存储在数据库列中的JSON对象。它将包含{photoid:123,photoname:“asdasd”,creator_id:“asdasd”}等数据 在Rails中,如何创建这种类型的JSON对象,然后如何将其与其他非JSON字段一起插入数据库 谢谢看看这个: 如果它不是您想要的,它至少会告诉您它已经完成了。首先,一定要查看ActiveRecord serialize,看看它是否满足您的

我正在创建一个AuditLog观察者,它监视多个模型

我希望观察者有一个after_create,它创建一个存储在数据库列中的JSON对象。它将包含{photoid:123,photoname:“asdasd”,creator_id:“asdasd”}等数据

在Rails中,如何创建这种类型的JSON对象,然后如何将其与其他非JSON字段一起插入数据库

谢谢

看看这个:


如果它不是您想要的,它至少会告诉您它已经完成了。

首先,一定要查看ActiveRecord serialize,看看它是否满足您的需要:

然而,如果您特别需要JSON(serialize默认使用YAML),那么您总是可以手工伪造它

您只需在Ruby中构建一个散列,然后在将其分配给模型属性之前调用
对其进行_json

data = { 'photoid' => 123, 'photoname' => "asdasd", 'creator_id' => "asdasd" }
myrecord.stored_data = data.to_json
myrecord.save

当前版本的rails支持现成的json序列化。在迁移中将字段定义为字符串(或文本),然后:

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

bar = Foo.new
bar.field = [1,2,3]
bar.save
class Foo
auditlog只是一个使问题更容易理解的示例。。。谢谢你,去那里安全吗?我在谷歌搜索上看到一些帖子提到它有时会失败?有什么想法吗?当你在activerecord对象上使用
to_json
时(你应该将
用作_json
或其他东西),会有一些皱纹,但是对于序列化一个简单的散列来说,这是非常简单的json编码。。。不会出什么差错的。你在Google上发现了什么?myrecord.stored\u数据是关于什么的?(存储的\u数据)?结果证明上述方法不起作用…不存在获取“存储的\u数据”错误的情况。。。此外,观察者是否应该位于控制器或模型目录中?运行生成器的bec将其放入模型目录。
存储的\u数据
是一个示例属性名称。它可以是你想要的任何东西。它还必须由数据库中的文本列支持。。。这不是魔法。创建一个迁移来添加它。最好将其定义为文本,否则255个字符的限制可能会导致问题。如果由于某种原因这不起作用(当记录被jsonified时仍会看到类似
{\'abc\':\'123\'}
),会出现什么问题?