ruby-on-rails - 如何从 Redis 缓存中获取对象而不是哈希?

标签 ruby-on-rails ruby caching redis to-json

我正在使用 Redis 缓存来保存数据。我正在使用 to_json 保存数据。我应该如何获取数据,使它变成保存前的样子。

保存前

#<CarModel id: 1, car_make_id: 1, title: "Jazz.....

使用JSON.load之后

{"id"=>1, "car_make_id"=>"1",.........}

我是怎么得到的,所以它变得像以前一样了

最佳答案

您的 CarModel 已经包含 ActiveModel::Serializers::JSON (假设它是一个普通的 Rails 模型),所以它响应 as_json它将属性作为(JSON 兼容的)散列返回:

car = CarModel.new(id: 1, car_make_id: 1, title: "Jazz")
#=> #<CarModel id: 1, car_make_id: 1, title: "Jazz">

json_object = car.as_json
#=> {"id"=>1, "car_make_id"=>1, "title"=>"Jazz"}

as_jsonto_json 调用来创建一个 JSON 字符串:(你已经使用了这个方法)

json_string = car.to_json
#=> "{\"id\":1,\"car_make_id\":1,\"title\":\"Jazz\"}"

from_json另一方面解析 JSON 字符串:

Car.new.from_json(json_string)
#=> #<CarModel id: 1, car_make_id: 1, title: "Jazz">

请注意,Car.new 创建了一个新实例,而 from_json 只是填充了它的属性。任何其他状态都不会被序列化。

此外,您数据库中的对象可能在此期间已更改,因此最好只存储对象的 ID 并从数据库中获取新副本。

关于ruby-on-rails - 如何从 Redis 缓存中获取对象而不是哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44844397/

相关文章:

node.js - 使用 redis 作为 REST Api 用户的缓存(为了保存 Api 请求)

java - 静态缓存 - 两个 "Instances"

mysql - Rails 插入不正确的 `order` 语句

ruby-on-rails - rubygems.org 和 github 上的 gem 版本之间的差异

ruby-on-rails - rails - float 精度

ruby-on-rails - 如何在 Nokogiri 节点名称中使用冒号 (":")

ruby-on-rails - Rails link_to 在按钮元素中不起作用

ruby-on-rails - Rails 4 迁移 |添加引用表

javascript - 我怎么知道 $http 响应是否来自缓存 - Angular

ruby-on-rails - 如何在 ruby​​ on rails 中将字符串转换为字节数组