2016-03-09 4 views
0

Если у меня есть @commentable, который может быть как Post или Article, могу ли я извлечь имя модели из переменной экземпляра?Как получить имя класса из переменной экземпляра в Rails?

+0

Вы всегда можете использовать is_a? для проверки определенного типа. –

+0

Вопрос всегда в том, зачем он нужен? Если вы планируете использовать его для разворачивания потока, это будет серьезная архитектурная ошибка (нарушение закона Деметры), которую вам нужно будет заплатить позже. – BroiSatse

+1

Возможный дубликат [Как получить имя класса Ruby?] (Http://stackoverflow.com/questions/826210/how-do-i-get-the-name-of-a-ruby-class) –

ответ

3

Используйте @commentable.class.name, чтобы узнать название класса переменной.

+0

другой способ сделать это '@ commentable.class.to_s.underscore' –

+1

' @ commentable.class.model_name.singular' - это рельсы. – BroiSatse

0

Вы можете использовать:

@commentable.class.name 

Но вот глюк. Если имя класса похоже на это ActiveRecord::Base, то оно содержит также модуль, вы можете вызвать demodulize, чтобы получить только имя класса.

@instance_variable.calss.name.demodulize # if the class name contains a module. 
Смежные вопросы