Как получить имя класса ruby ​​и имя поля на рельсах - PullRequest
2 голосов
/ 03 ноября 2010
 u=User.find(:first)
 u.to_s
 => "#<User:0x9b017ac>"

как я могу вывести User эту строку класса

Ответы [ 3 ]

7 голосов
/ 03 ноября 2010

Самый «правильный» способ из документации 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" 
6 голосов
/ 03 ноября 2010

Если вы хотите получить имя класса, попробуйте:

u.class.to_s

Редактировать:

Как отметил Сергей в своем ответе, лучше использовать

u.class.name

Я полагаю, что это потому, что to_s может быть перезаписано и, возможно, может вернуть другую строку, которая была возвращена name.

0 голосов
/ 03 ноября 2010

Попробуйте u.inspect и посмотрите, соответствует ли какая-либо из этих данных вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...