如何让ruby块返回块中的变量数组?

时间:2012-05-15 02:50:55

标签: ruby block

在红宝石块中:

user.trips.each { |trip| trip.pickedpost.user }

如何让代码返回一组用户?

如果我运行块

user.trips.each { |trip| puts trip.pickedpost.user }

irb表示

#<User:0x007fd1ab9e2148>
#<User:0x007fd1aacf3dd8>
 => [#<Trip id: 18, pickedpost_id: 25, volunteer_id: 33, created_at: "2012-05-14 23:28:36",    updated_at: "2012-05-14 23:28:36">, #<Trip id: 20, pickedpost_id: 20, volunteer_id: 33, created_at: "2012-05-15 00:12:39", updated_at: "2012-05-15 00:12:39">] 

该块返回一个trip对象数组,这不是我想要的。

如何让块返回用户数组?

由于

1 个答案:

答案 0 :(得分:3)

看起来你想要的是.collect()它:

user.trips.collect { |trip| trip.pickedpost.user }

或使用.map()

user.trips.map(&:pickedpost).map(&:user)