循环直到我得到正确的用户

时间:2015-06-22 15:20:30

标签: ruby redis

我有用户存储在Redis中,并希望能够只从一个集合中调用某些子集,如果我没有得到正确的用户,我想把它放回到集合中,然后再试一次,直到我得到一个所需用户

@redis = Redis.new
@randUser = @redis.spop("users")

if @randUser.include?(["user_4", "user_5", "user_6"])
  @redis.sadd("users", @randUser)
  # Run @randUser = @redis.spop("users") again
else
  $user_username = @redis.hget(@randUser, "username")
  $user_password = @redis.hget(@randUser, "password")
end

我无法理解我的想法,我还能如何处理这个问题?

1 个答案:

答案 0 :(得分:2)

if更改为while

while ["user_4", "user_5"].include?(@randUser = @redis.spop("users")) do
  @redis.sadd("users", @randUser)
end

$user_username = @redis.hget(@randUser, "username")
$user_password = @redis.hget(@randUser, "password")

请注意,您实际上混淆了Array#include?

上的接收器和参数