Что происходит, когда Ruby показывает что-то вроде этого: # <Role: 0x11157b630>? - PullRequest
2 голосов
/ 05 октября 2010

Я помню, что сталкивался с этим при первом просмотре нескольких видео на Ruby, но не могу найти его снова.Когда Ruby показывает что-то вроде этого:

#<Role:0x11157b630>  

, что происходит?

У меня три роли (администратор / персонал / клиент), и я хотел бы показать одну из них, а не

#<Role:0x11157b630>.

Есть идеи, как мне это сделать?

Ура!

Ответы [ 5 ]

5 голосов
/ 05 октября 2010

То, что вы видите, это просто представление экземпляра, который вы получили. Скажем, у вас есть атрибут title в классе Role, вместо logger.debug @role вы можете сделать что-то вроде logger.debug @role.title. Если вы хотите просто сделать logger.debug @role, чтобы распечатать что-то более полезное, определите метод to_s для Role.

2 голосов
/ 05 октября 2010

Добавление метода проверки должно показать некоторые дополнительные детали.

@role.inspect
1 голос
/ 05 октября 2010

Вот как выглядит реализация по умолчанию to_s; имя класса, за которым следует местоположение в памяти. Вы можете определить свою собственную версию, если вам нравится:

def to_s
   "My name is #{@name}"
end
0 голосов
/ 06 октября 2010

Согласно Секрету объекта # to_s , число в #<Role:0x11157b630> в два раза больше object_id объекта в шестнадцатеричной системе.

0 голосов
/ 05 октября 2010

Когда я начинал с рельсов, иногда возникали странные ошибки, когда я делал что-то простое, например:

<% @posts.each do |post| %>
  ....
<% end %> 

Я бы получил эти странные выводы под списком сообщений.

Например:

#<Post:0x11157b630>#<Post:0x11157b630>#<Post:0x11157b630>

Оказывается, я случайно поставил "=" перед циклом.

<%= @posts.each do |post| %>
      ....
<% end %> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...