如何获取ActiveRecord关联的列名和值?

时间:2013-08-30 15:24:26

标签: ruby-on-rails rails-activerecord

我想获取列名和值。这是我正在使用的代码:

@products.features.each do |feature|
    puts feature.color
    puts feature.size 
    puts feature.flavor
    # etc....
end

我想循环通过...类似于:

@products.features.each do |column, value|
  puts column + ":" + value
end

我知道我可以创建一个Hash并将它们映射到控制器中。但我想知道是否有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:3)

#column_names是一种以字符串形式获取所有AR列名的方法。

.collect(&:to_sym)在每个上面调用to_sym并将它们放在一个数组中。

column_names = Feature.column_names.collect(&:to_sym)
@products.features.each do |feature|
  #iterate thru column names. btw string interpolation is better than using +
  column_names.each { |column| puts "#{column} : #{feature.send(column)}" }
end