0
何らかの理由で私のhget
がパブリックメソッドで設定したハッシュを見つけたり返したりしていない。なぜ私は理解できません。プライベートメソッドのHGETがハッシュを返さない
これは私が私のRedisの初期化子を定義する場所である、すべてのApplicationController
から継承する一方のコントローラである:
def redis
Thread.current[:redis] ||= Redis.new
end
はその後、私のコントローラで私はハッシュを設定するには、次の操作を行います。
def return_customer
email = params["email"]
customer = Customer.find_by(email: email)
credit_amount = customer.credit_amount.to_f
customer_data = {email: email, customer_id: customer.id, credit_amount: credit_amount}
redis.hset("shop:#{customer.shop.id}:customer", customer_data, customer_data.inspect)
render json: customer
end
そして、最後に私は同じコントローラ内の他のメソッドで使うプライベートメソッドを持っています。これは動作しない部分です:
private
def get_customer_from_redis
shop = Shop.find_by(shopify_domain: params["shop"])
customer_info = redis.hget("shop:#{shop.id}:customer", customer_data)
eval(customer_info)
end
これは
TypeError (no implicit conversion of nil into String):
うん、 'inspect'はRuby特有の形式であり、簡単かつ安全に逆シリアル化できるものではありません。 JSONははるかに優れています。 – tadman
ありがとう..まだ動作していない..私はこのエラー.. "TypeError(文字列にnilの暗黙の変換なし):" – ToddT
@ToddT私の答えを更新しました。 customer_infoがnilになる可能性があるため、get_custom_from_redisメソッドはエラーをスローしません。あなたは今それを試してみてください。 – DjezzzL