Массив кеша с помощью attr_accessor? - PullRequest
3 голосов
/ 23 января 2012

Когда я добавляю attr_accessor в мою модель без столбца в базе данных, я могу добавить временные данные в массив объектов класса.

Мой пример:

class User < ActiveRecord::Base
  attr_accessor :score
end

Проблематем не менее, если кеш в memcache массив пользователей с оценками, массив изменяется от:

[< 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, либо с хранилищем файлов.

Спасибо за помощь!

1 Ответ

0 голосов
/ 06 декабря 2012

Попробуйте использовать cattr_accessor, он также добавит метод доступа к классу. Это сработало для меня.

...