Ruby on rails 应用程序控制器没有子类?
只是好奇为什么会在rails控制台中发生这种情况:Ruby on rails 应用程序控制器没有子类?,ruby-on-rails,Ruby On Rails,只是好奇为什么会在rails控制台中发生这种情况: Loading development environment (Rails 4.1.5) 2.1.2 :001 > require 'application_controller' => true 2.1.2 :002 > ApplicationController => ApplicationController 2.1.2 :003 > ApplicationController.subclasses
Loading development environment (Rails 4.1.5)
2.1.2 :001 > require 'application_controller'
=> true
2.1.2 :002 > ApplicationController
=> ApplicationController
2.1.2 :003 > ApplicationController.subclasses
=> []
2.1.2 :004 > ::ApplicationController.descendants
=> []
我有这个控制器
class MyController < ApplicationController
end
class MyController
所以我期待着
ApplicationController.subclass#=>[MyController]
,然而,我得到的是一个空数组:(好吧,这要归功于Yoshiji先生,但下面是显示子类的方式:
Loading development environment (Rails 4.1.5)
2.1.2 :001 > require 'application_controller'
=> true
2.1.2 :001 > require 'my_controller'
=> true
2.1.2 :002 > ApplicationController
=> ApplicationController
2.1.2 :003 > ApplicationController.subclasses
=> [MyController]
延迟加载意味着一个对象在运行时被特别调用之前不存在于内存中。我的第二个命令,
require'My_controller
主动引用ApplicationController的一个子类,因此当我们使用.subclass
方法列出它的子类时,它就会出现。这个答案和第一条注释可能会引起兴趣你是因为延迟加载。@MrYoshiji:我在生产模式下尝试过同样的方法,rails c-e生产,它返回相同的..[]