Для этого вам нужно посмотреть, как выглядит модель объекта Ruby.
Это означает, что классы, созданные с помощью ключевого слова class
всегда будет подкласс Object
по умолчанию. Class
не является суперклассом вашего класса Order
, скорее это экземпляр класса Class
. Module#ancestors
будет включать список модулей, включенных в мод (включая сам мод) и суперкласс вашего класса. Заказ.
class Order;end
Order.superclass # => Object
Order.superclass.superclass # => BasicObject
Order.superclass.included_modules # => [Kernel]
Так что, если вы смотрите на выходе и понять приведенный выше код, то ниже должна теперь быть ясно:
Order.ancestors #-> [Order, Object, Kernel, BasicObject]
Теперь посмотрим,
class Order;end
Order.class # => Class
Order.instance_of? Class # => true
Order.class.superclass # => Module
Order.class.superclass.superclass # => Object
Order.class.superclass.superclass.included_modules # => [Kernel]
Так что, если вам посмотрите на результат и поймите приведенный выше код, затем ниже должно быть ясно:
Order.class.ancestors #->[Class, Module, Object, Kernel, BasicObject]
Это говорит Order.ancestors
дает вам предок класса Order
, в то время как Order.class.ancestors
дает вам предок Class
.