2012-01-23 8 views
3

データベースに列がないモデルにattr_accessorを追加すると、クラスオブジェクトの配列に一時データを追加できます。attr_accessorを使用したキャッシュモデルアレイ?

私の例:

class User < ActiveRecord::Base 
    attr_accessor :score 
end 

問題があるというのmemcacheでキャッシュがスコアを持つユーザーの配列は、配列がから行く場合:

[<User>, <User>, <User>] 

へ:

[<User>, :@score, 100, <User>, :@score, 200, <User>, :@score, 300] 

アレイを破壊することなくこの情報をキャッシュする方法はありますか?要求されたように、キャッシュにデータを置く実際のコード:

EDITは

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のかのいずれかで表示されますfilestoreと一緒に。

ありがとうございました!

+1

配列をmemcacheに配置するコードを表示します。 –

+0

私はちょうど質問を更新しました:) – rnaud

+0

私はそれを再現できません。私はレール3.2、memcache-client 1.8.5、memcached 1.4.7です。 'users_scoreboard'は常に私のために' Users'の配列を返します。 –

答えて

0

cattr_accessorを使用すると、アクセサメソッドがクラスに追加されます。これは私のために働いた。

関連する問題