簡単な情報を保存するためにredis-objectsgemを使用しています
class Purchase < ActiveRecord::Base
include Redis::Objects
hash_key :user_purchases, :marshal => true, :global => true # "hash" is taken by Ruby
def self.add_user_end(fb_id,item_id)
if self.user_purchases[fb_id]
a = Array.new
a << candidate_id
self.user_purchases[fb_id] = a
else
new_a = self.user_purchases[fb_id]
new_a << item_id
self.user_purchases[fb_id] = new_a
end
end
end
user_purchasesをhasy_keyとして収集し、usersfbidでキー設定するメソッドを作成しています。Purchase.user_purchases ["2"] => [1,23,563,2]を使用すると、IDのコレクションが表示されることを意味します。
これを文字列としてしか保存できないRedis::Objectで問題が発生しています:なぜですか?
1.9.3-p125 :050 > Purchase.user_purchases["6"].class
=> String
1.9.3-p125 :051 > Purchase.user_purchases["6"]
=> "\u0004\b[\u0006I\"\v543555\u0006:\u0006ET"
答え:
初期化ファイルがありませんでしたrequire'redis/ list'
require 'redis'
require 'redis/objects'
require 'redis/hash_key'
require 'redis/list'
Redis.current = Redis.new(:host => '127.0.0.1', :port => 6379)