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

时间:2017-06-30 10:34:11

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

我正在使用redis缓存来保存数据。我正在使用@Component public static class DataSourceCredentialsFilter extends GenericFilterBean { private final UserCredentialsDataSourceAdapter dataSourceAdapter; @Autowired public DataSourceCredentialsFilter(UserCredentialsDataSourceAdapter dataSourceAdapter) { this.dataSourceAdapter = dataSourceAdapter; } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { final Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); final User user = (User) authentication.getPrincipal(); dataSourceAdapter.setCredentialsForCurrentThread(user.getUsername(), user.getPassword()); chain.doFilter(request, response); dataSourceAdapter.removeCredentialsFromCurrentThread(); } } 保存数据。我应该如何获取数据,以便在保存之前变得像。

保存前

to_json

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

JSON.load

我如何变得像以前一样

1 个答案:

答案 0 :(得分: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并从数据库中获取新的副本。