繁体   English   中英

使用find_each创建哈希数组

[英]Creating an array of hashes using find_each

我正在尝试创建一个哈希数组。 我可以使用User.all创建一个,但是我不想一次加载所有数据,因此我尝试使用find_each。 我是红宝石新手,有人可以指出我做错了什么吗?

当我使用.all

2.0.0 (main):0 > User.all.as_json.map { |u| {
2.0.0 (main):0 * index: {id: u["user"]["id"]}}}
[{:index=>{:id=>443}},
 {:index=>{:id=>3642}},
 {:index=>{:id=>506}}, ...

当我使用find_each

2.0.0 (main):0 > User.find_each { |u|
2.0.0 (main):0 *   u = u.to_json;
2.0.0 (main):0 *   u = JSON.parse(u);
2.0.0 (main):0 * {index: { id: u["user"]["id"]}}}
  User Load (19.2ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1000
  User Load (18.2ms)  SELECT "users".* FROM "users" WHERE ("users"."id" > 1038) ORDER BY "users"."id" ASC LIMIT 1000
  User Load (21.4ms)  SELECT "users".* FROM "users" WHERE ("users"."id" > 2105) ORDER BY "users"."id" ASC LIMIT 1000
  User Load (14.5ms)  SELECT "users".* FROM "users" WHERE ("users"."id" > 3139) ORDER BY "users"."id" ASC LIMIT 1000
=> nil

find_each不返回任何内容,只是将其传递到给定的块中。

my_objects = []
User.find_each { |u|
  u = u.to_json
  u = JSON.parse(u)
  my_objects << {index: { id: u["user"]["id"]}}
}
my_objects.to_json

有关查找每个对象及其用法(例如batch_size等)的更多信息,请参见文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM