3
当我在模型中添加attr_accessor而没有数据库中的列时,我可以将临时数据添加到类对象数组中。具有attr_accessor的缓存模型数组?
我的例子:
class User < ActiveRecord::Base
attr_accessor :score
end
问题不过是,如果缓存在内存缓存与分数用户的数组,数组云从:
[<User>, <User>, <User>]
到:
[<User>, :@score, 100, <User>, :@score, 200, <User>, :@score, 300]
有什么办法可以在不破坏数组的情况下缓存这些信息?
编辑:按照要求,这使在缓存中的数据的实际代码:
def users_scoreboard
Rails.cache.fetch("special_scoreboard_#{self.cache_key}", :expires_in => 1.hour) do
users = Photo.missions(self.missions).created(self.start_at, self.end_at).map(&:user).uniq!
users = [] if users.nil?
users.each do |u|
u.score = u.score_for_special(self)
end
users.sort! { |a,b| b.score <=> a.score }
end
end
编辑:我使用的是什么:
ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.0.1]
rails -v
Rails 3.2.0
memcached -i
memcached 1.4.5
memcached -i
memcached 1.4.5
gem -v dalli
1.8.8
但问题出现或者与内存缓存或与文件存储。
感谢您的帮助!
向我们展示将数组放入memcache的代码。 –
我刚刚更新了这个问题:) – rnaud
我无法重现那个。我在rails 3.2上,memcache-client 1.8.5,memcached 1.4.7和'users_scoreboard'总是为我返回一个'Users'数组。 –