使用collect in send和不同的参数

时间:2012-06-18 10:51:41

标签: ruby-on-rails ruby

我有一个名为Trial的课程has_many。现在,我想做的是用差分行计算。

所以我有一个Array,其中包含应该收集的所有collumn名称。我想使用Collect方法,但它有点棘手。

t = Trial.find(<id>)
["collumn1", "collunn2", "collumn3"].each do |collumn_name|
  data = t.results.send("collect", &:collumn_name)
  # HERE I WANT DO WORK WITH THE COLLECTED DATA
end

但它不起作用,因为collect方法除了一些块而不是String。我该如何处理这个问题?

1 个答案:

答案 0 :(得分:1)

符号#to_proc将为您提供所需内容:

t = Trial.includes(:results).find(<id>) # <-- use includes to avoid having to requery for results
[:collumn1, :collunn2, :collumn3].each do |collumn_name|
  data = t.results.collect &collumn_name
  # whatevs
end