只是好奇为什么会在 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
=> []
2.1.2 :004 > ::ApplicationController.descendants
=> []
我有这个 Controller
class MyController < ApplicationController
end
所以我期待 ApplicationController.subclasses #=> [MyController]
,但是,我得到一个空数组:(
最佳答案
嗯,功劳归于 MrYoshiji,但这是显示子类的方式。:
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
方法列出其子类时,它就会出现。
关于ruby-on-rails - 应用程序 Controller 没有子类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26061453/