首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将JSON转换回ActiveRecord

将JSON转换回ActiveRecord
EN

Stack Overflow用户
提问于 2021-06-13 01:34:10
回答 1查看 66关注 0票数 0

所以目前我有一个Model类

代码语言:javascript
运行
复制
class Book
  # author_id
end

对于上面的Model类,我有一个简单的委托类

代码语言:javascript
运行
复制
class BookDecorator < SimpleDelegator
   attr_accessor :list_of_reviews
   
   def initialize
      super
      @list_of_reviews = []
   end
end

我在Rails控制台上测试了它

代码语言:javascript
运行
复制
-> book = Book.find(1)
-> book = BookDecorator(book)
-> book.list_of_reviews  
-> []

但是,当我将对象序列化为JSON时

代码语言:javascript
运行
复制
-> book = book.to_json
-> Deserialize back
-> book = JSON.parse(book)
-> book.list_of_reviews
-> NoMethodError: undefined method `list_of_reviews` for <String:0x00007>

如何将JSON反序列化为附加了装饰器的ActiveRecord?

我之所以必须序列化到JSON,是因为我必须将它存储在Redis中。

并在以后反序列化以访问该list_of_reviews方法

EN

回答 1

Stack Overflow用户

发布于 2021-06-13 22:00:54

没有自动从JSON“反序列化”记录的方法。这是一个单向的过程。一个非常幼稚的解决方案是:

代码语言:javascript
运行
复制
book = Book.new(JSON.parse(book))

但是,该记录的行为不同于已持久化并从数据库获取的记录,这可能会导致问题。还有一个问题是,您将记录的属性转换为JSON支持的原始类型。这方面的一个例子是JSON没有正确的decimal类型,这可能会导致舍入错误,并且关联不会被序列化/反序列化。

作为解决大多数问题的Rails has tons of caching mechanisms already,整个endavor看起来非常像一场徒劳无功的追逐。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67951397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档