我想循环浏览“用户”模型的所有属性,我该怎么做?
答案 0 :(得分:51)
如果您有模型的实例,那么user.attributes
是模型属性及其值的哈希,例如,您可以执行以下操作:
user.attributes.each_pair do |name, value|
puts "#{name} = #{value}"
end
如果您没有特定实例,则该类具有返回有关数据库中字段的信息的方法,例如User.columns
和User.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版本。)