users = [
{"id":1, "zipcode":"10031"},
{"id":4, "zipcode":"10000"},
{"id":2, "zipcode":"10031"},
{"id":3, "zipcode":"10031"}
]
大家好。我需要帮助,可以减少我的代码过程。我有一个用户存储数据。我想在第一行代码中实现吗
[
{"id":1, "zipcode":"10000", "users_count": 1},
{"id":2, "zipcode":"10031", "users_count": 3},
]
我的代码:
user = User.select(:zipcode).group(:zipcode).count(:id)
上面代码的结果是
{"10000"=>1, "10031"=>3}
keys = user.keys
values = user.values
i = 0
num = keys.length.to_i
zipcodes = []
while i < num do
zipcode = keys[i]
users_count = values[i]
zipcodes[i]= zipcode , users_count
i +=1
end
如果上面的代码是[[10000,1],[10031,3]],则返回结果
如果此代码我想更改结果 user = User.select(:zipcode).group(:zipcode).count(:id)
由此
{"10000"=>1, "10031"=>3}
对此
[{"id":1, "zipcode":"10000", "users_count": 1},{"id":2, "zipcode":"10031", "users_count": 3}]
您可以这样修改查询,
user_counts = User.select(:zipcode, 'count(*) as user_count').group(:zipcode)
请注意,在控制台上打印的结果中,user_count
不会显示,因为它不是用户模型的属性。但是它在那里,可以通过以下方式访问
user_counts.each do |user_count|
puts user_count.zip_code
puts user_count['user_count']
end
您还可以通过将所有结果转换为JSON来查看所有结果
user_counts = User.select(:zipcode, 'count(*) as user_count').group(:zipcode)
puts user_counts.as_json
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句