each_with_objectを使う方と使わない方で同じ結果になる。
each_with_objectを使う方が1行コードを減らせるし、すっきりして見やすいのでeach_with_objectを積極的に使っていきたい。
##each_with_objectを使わない①
users = User.all
posts = []
users.each do |user|
posts << user.posts
end
##each_with_objectを使わない②
users = User.all
posts = users.map(&:posts)
#> posts
#=> [[#<Post:0x00007f01540e45a0
id: 303,
content: "内容内容内容内容内容内容",
created_at: Fri, 18 Feb 2022 11:41:52.844699000 JST +09:00,
updated_at: Fri, 18 Feb 2022 11:41:52.844699000 JST +09:00>],
[#<Post:0x00007f0154482540
id: 304,
content: "内容内容内容内容内容内容",
created_at: Fri, 18 Feb 2022 11:41:53.312786000 JST +09:00,
updated_at: Fri, 18 Feb 2022 11:41:53.312786000 JST +09:00>]]
##each_with_objectを使う
users = User.all
posts = users.each_with_object([]) do |user, array|
array << user.posts
end
#> posts
#=> [[#<Post:0x00007f01540e45a0
id: 303,
content: "内容内容内容内容内容内容",
created_at: Fri, 18 Feb 2022 11:41:52.844699000 JST +09:00,
updated_at: Fri, 18 Feb 2022 11:41:52.844699000 JST +09:00>],
[#<Post:0x00007f0154482540
id: 304,
content: "内容内容内容内容内容内容",
created_at: Fri, 18 Feb 2022 11:41:53.312786000 JST +09:00,
updated_at: Fri, 18 Feb 2022 11:41:53.312786000 JST +09:00>]]
##参考