如何在rails上获取ruby类名和字段名

mlz*_*boy 2 ruby ruby-on-rails

 u=User.find(:first)
 u.to_s
 => "#<User:0x9b017ac>"
Run Code Online (Sandbox Code Playgroud)

User该如何输出这个类字符串

Ser*_*gey 7

Ruby文档中最"正确"的方法是使用u.class.name更新:答案 - 选择为正确的u.name.to_s - 不对,原因:

例如:

class A
  def self.to_s
    "BBB"
  end
end

ruby-1.8.7-p302 > a.class.to_s
 => "BBB" 
ruby-1.8.7-p302 > a.class.name
 => "A" 
Run Code Online (Sandbox Code Playgroud)


Flo*_*rin 6

如果要获取类名,请尝试:

u.class.to_s
Run Code Online (Sandbox Code Playgroud)

编辑:

正如谢尔盖在他的回答中指出的那样,最好使用

u.class.name
Run Code Online (Sandbox Code Playgroud)

我相信这是因为to_s可能被覆盖,它可能会返回一个返回的字符串name.