我很好奇为什么它们会产生不同的输出.所需的输出是ActiveRecord记录的array.
当使用内联块时,它看起来像是在执行ActiveRecord查找,但随后将原始数组(减go reject
个元素)嵌套在另一个数组中,并将嵌套数组追加到变量中.
使用多行块时,会发生预期的行为,即发生ActiveRecord查找,并将标识的记录附加到变量.
x = []
y = ["", "1353", "1155"]
x << y.reject!(&:empty?).each { |i| User.find(i) }
# => ["1353", "1155"]
x
#=> [["1353", "1155"]]
VS
x = []
y = ["", "1353", "1155"]
y.reject!(&:empty?)
y.each do |i|
x << User.find(i)
end
# => ["1353", "1155"]
x
#=> [#<User:0x00007fc7fbacc928
# id: 1353,
# login: nil,
...