给定一个模型,如何遍历所有属性?

时间:2010-10-26 11:32:01

标签: ruby-on-rails ruby

我想循环浏览“用户”模型的所有属性,我该怎么做?

3 个答案:

答案 0 :(得分:51)

如果您有模型的实例,那么user.attributes是模型属性及其值的哈希,例如,您可以执行以下操作:

user.attributes.each_pair do |name, value|
  puts "#{name} = #{value}"
end

如果您没有特定实例,则该类具有返回有关数据库中字段的信息的方法,例如User.columnsUser.content_columns。 e.g。

User.columns.each do |column|
  puts column.name
end

答案 1 :(得分:1)

Article.columns.each do |column|
  puts column.name
end

这会遍历文章模型的所有列对象。

答案 2 :(得分:1)

@ model.methods返回对象的所有方法的名称。

@ model.methods.grep(/ = $ /)将返回所有写入方法的名称,因此您可以猜测,如果您有一个setter,那么您还有一个读者,所以这可能是一个“属性” ”

你也可以检查属性hash(@ model.attributes),它是一个Hash,包含数据库中定义的所有列,这可能是最可靠的方法,因为“methods”方法可能不包含属性读者(和作家)动态生成。 (这可能取决于您使用的RubyOnRails版本。)