如何在ruby中使用hash

M.O*_*vio 0 ruby hash

我正在尝试使用哈希来存储用户.我有这个代码,它正在工作,但这不是我想要的方式:

@user_hash = Hash.new
@user_hash = User.all(:all)

user = Hash.new
user = @user_hash.select { |item| item["user_id"] == '001' }

puts user[0].name
Run Code Online (Sandbox Code Playgroud)

我怎么能用像user.nameinsted 这样的东西user[0].name

Nil*_*ndt 5

首先,在使用之前不需要初始化哈希 - Hash.new这里不需要两次调用.

其次,你唯一的问题是你正在使用这种select方法.引用文档:

返回一个新的哈希,该哈希由块返回true的条目组成.

那不是你想要的.您想要使用detect:将枚举中的每个条目传递给阻止.返回第一个块不为false的块.

user = @user_hash.detect { |item| item["user_id"] == '001' } 应该管用