diff options
author | rhenium <re4k@re4k.info> | 2013-06-26 04:08:53 +0900 |
---|---|---|
committer | rhenium <re4k@re4k.info> | 2013-06-26 04:08:53 +0900 |
commit | b87eab0ff6e7f3e509957f821050981d45c202e6 (patch) | |
tree | f9539a5ddf9de09f0d360bb0c9f708282bdd2f54 | |
parent | 9f4fb7b3201f4faec60c62a46e9d320be4c0ae7e (diff) | |
parent | 1caa370000cebdf39b5d627250d480fdee6949b0 (diff) | |
download | aclog-b87eab0ff6e7f3e509957f821050981d45c202e6.tar.gz |
Merge branch 'master' of re4k.info:aclog
-rw-r--r-- | app/models/tweet.rb | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/app/models/tweet.rb b/app/models/tweet.rb index 4b09171..0b24c59 100644 --- a/app/models/tweet.rb +++ b/app/models/tweet.rb @@ -1,3 +1,5 @@ +require "digest/md5" + class Tweet < ActiveRecord::Base extend Aclog::Twitter @@ -150,15 +152,13 @@ class Tweet < ActiveRecord::Base end def self.cache_list(expires_in) - key = "tweets/#{scoped.to_sql}" + key = "tweets/ids/#{Digest::MD5.hexdigest(scoped.to_sql)}" ids = Rails.cache.read(key) - if ids - Tweet.where(id: ids).order("CASE #{ids.each_with_index.map {|m, i| "WHEN ID = #{m} THEN #{i}" }.join(" ")} END") - else - # use map instead of pluck: not to excecute new SQL - Rails.cache.write(key, scoped.map(&:id), expires_in: expires_in) - scoped + unless ids + ids = scoped.pluck(:id) + Rails.cache.write(key, ids, expires_in: expires_in) end + unscoped.where(id: ids).order("CASE tweets.id #{ids.each_with_index.map {|m, i| "WHEN #{m} THEN #{i}" }.join(" ")} END") end end |