Размышляя о классе непосредственного предка - PullRequest
1 голос
/ 30 октября 2009
Apple < ActiveRecord:Base
Orange < ActiveRecord:Base

piece_of_fruit = Apple.new

Я хочу знать, является ли piece_of_fruit Apple или Orange - , хотя оба получены из ActiveRecord:Base.

Есть ли метод отражения, который сообщит мне следующий класс в дереве наследования (Apple / Orange).

А что если я захочу посмотреть на каждый последующий шаг в иерархии наследования после этого, начиная с ActiveRecord: Base в этом случае?

Ответы [ 3 ]

2 голосов
/ 02 ноября 2009

Ответ на ваш первый вопрос, который опубликовали другие, -

piece_of_fruit.is_a? Apple

Ответ на ваш второй вопрос («Что, если я хочу посмотреть на каждый последующий шаг в иерархии наследования?») Заключается в использовании методов class и superclass.

piece_of_fruit.class 
=> Apple
piece_of_fruit.class.superclass     
=> ActiveRecord::Base
2 голосов
/ 30 октября 2009

Как насчет

piece_of_fruit.kind_of?(Apple)
0 голосов
/ 30 октября 2009

is_a и kind_of являются синонимами, поэтому вы можете написать одно из следующих:

piece_of_fruit.is_a?(Apple)

или

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