在activerecord中按“name”获取列

时间:2012-05-15 23:08:47

标签: ruby-on-rails activerecord select

我有一个select语句,它返回表中的一个字段。

records = Product.select("DISTINCT #{iFieldName}").where("id in (0, #{iInClaws})" )

我想将数据库中的数据转换为稍后要使用的数组..比如另一个inClaws。

records.each{|record| fieldArray << record.?????}

我有两个问题。

  1. 有更好的方法吗?
  2. 如果没有,那么如何从现场获取数据。
  3. <小时/> 谢谢大家.. 每个人都来帮助我的最终方法看起来像这样。

    def self.getFieldArray(iFieldName, iIDsInClaws, iIdFieldName = 'id')
        records = self.select("DISTINCT #{iFieldName}").where("#{iIdFieldName} in (#{iIDsInClaws})" )
        return records.map{|record| record.send(iFieldName)};
    end
    

2 个答案:

答案 0 :(得分:2)

records.each{|record| fieldArray << record.send(iFieldName)}

答案 1 :(得分:2)

fieldArray = records.map(&:iFieldName)

或者

res = records.map{|r| r.send(iFieldName)}