我觉得有一种方法可以使用一行在ruby中执行以下代码。任何人?
arr = []
sample_object.all.each { |o| arr << o.id }
arr.join(', ')
这将返回一个由该对象加入的id的字符串&#39;&#39;像:
"1, 2, 4, 5, 6, 8, 9"
答案 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)
你是对的,有一种更简单的方法;使用map
或collect
。使用collect
的示例:
sample_object.all.collect(&:id).join(', ');
参考:Enumerable
答案 2 :(得分:2)
我很惊讶地看到没有提到pluck
,如果您只想要对象的ID,那将是一个明显的竞争者,因为它faster and less resource intensive而不是在完全初始化的对象上进行映射/收集。
sample_object.all.pluck(:id).join(', ')