先上代码
def self.cache_find(id)
key = "work:" + id.to_s
work = $redis.hgetall(key)
# binding.pry
if work.blank?
work = Work.find(id)
$redis.mapped_hmset(key, work.attributes)
$redis.expire(key, 1.hour.to_i)
else
attrs = work
work = Work.new
attrs.each do |key, value|
work.send("#{key.to_s}=", value)
end
end
work
end
我的疑问是:如果我写如下的代码
work = Work.cache_find 1
work.name = 'test_work'
work.save
此时是不能更新数据的,因为 Rails 调用的不是 update 而是 save,在数据库中 id = 1 的数据已经存在,导致不能更新数据。请问有什么方法解决这个办法吗?