【发布时间】:2015-06-07 06:45:03
【问题描述】:
我有一个具有这种文件夹结构的应用:
# /app/controllers/first_controller.
class FirstController
def method
'External'
end
end
# /app/controllers/second_controller.rb
class SecondController
def method
'External'
end
end
# /app/controllers/foo/first_controller.rb
module Foo
class FirstController < ::FirstController
def method
'Internal'
end
end
end
我希望的行为是:
Foo::FirstController#method => "Internal"
Foo::SecondController#method => "External"
所以,如果控制器没有在模块Foo中定义,它应该实例化外部cass
我尝试创建一个文件foo.rb:
# /app/controllers/foo.rb
module Foo
def self.const_missing(name)
"::#{name}".constantize
end
end
但是使用它会使rails忽略/app/controllers/foo/*.rb下定义的所有类(根本不需要它们)。
我怎样才能得到这个?
【问题讨论】:
标签: ruby-on-rails ruby inheritance class-constants