1

簡単な情報を保存するために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)
4

1 に答える 1

1

初期化ファイルがありませんでした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)
于 2013-03-01T01:34:44.857 に答える