从rails中的结果集对象获取元数据

时间:2012-03-12 09:19:54

标签: ruby-on-rails ruby

我在rails中使用了一些自定义查询。 代码段看起来像

@time_spent = TimeEntry.find(:all,
                             :joins => "INNER JOIN sometable ON x = y",
                             :select =>"id, subject, spent_on")

现在获取我正在使用的值

@time_spent[index][:spent_on]
@time_spent[index][:subject]

我想要的是使用索引号代替符号。因此,在运行时我不需要知道select子句中的字段。

例如我想做一些与此相似的事情

@time_spent[index][1]
@time_spent[index][2]

如果我可以获得结果集的元数据,我可以使用该信息

请注意?

2 个答案:

答案 0 :(得分:0)

当@time_spent是一个对象集合时,这将获得为该集合中第一个[0]项指定的索引的属性值:

@time_spent[0].attributes.values[index]

因此,例如,要获取集合中第二个对象的第5个属性的值:

@time_spent[1].attributes.values[4]

答案 1 :(得分:0)

从结果集中获取字段名称,使用attributes.keys方法