-1

我正在使用 redis 缓存来保存数据。我正在使用to_json. 我应该如何获取数据,使其变得像保存之前一样。

保存前

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

使用后JSON.load

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

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

4

1 回答 1

0

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_json被调用to_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 并从数据库中获取新副本。

于 2017-06-30T11:05:01.987 回答