如何遍历对象并在字符串中加入其中一个属性?

时间:2016-03-25 00:03:39

标签: ruby-on-rails ruby ruby-on-rails-4

我觉得有一种方法可以使用一行在ruby中执行以下代码。任何人?

arr = []
sample_object.all.each { |o| arr << o.id }
arr.join(', ')

这将返回一个由该对象加入的id的字符串&#39;&#39;像:

"1, 2, 4, 5, 6, 8, 9"

3 个答案:

答案 0 :(得分:2)

首先,没有必要建立arr,我们可以写

sample_object.all.map { |o| o.id }.join(', ')

map允许我们将sample_object的数组转换为该块返回的id

我们可以使用to_proc进一步简化:

sample_object.all.map(&:id).join(', ')

答案 1 :(得分:2)

你是对的,有一种更简单的方法;使用mapcollect。使用collect的示例:

sample_object.all.collect(&:id).join(', ');

参考:Enumerable

答案 2 :(得分:2)

我很惊讶地看到没有提到pluck,如果您只想要对象的ID,那将是一个明显的竞争者,因为它faster and less resource intensive而不是在完全初始化的对象上进行映射/收集。

sample_object.all.pluck(:id).join(', ')