Ruby on rails 3 Rails 3,从模型中获取所有控制器名称的列表?

Ruby on rails 3 Rails 3,从模型中获取所有控制器名称的列表?,ruby-on-rails-3,routes,controllers,Ruby On Rails 3,Routes,Controllers,我的目标是为这个控制器的视图创建快速URL。有点像有些网站通过domain/*映射来查看用户的个人资料。除了简单地将此规则放在文件末尾的routes rb中,我还希望防止用户无意中将其URL命名为控制器(或故意命名)。因此,我需要一种快速的方法来获取所有控制器的名称,然后在我的模型中编写一个自定义验证器,告诉用户指定的url是保留的 那么我如何才能得到所有控制器的列表呢 ActiveSupport向类对象添加了一个“subclass”属性,因此您应该能够调用ApplicationControll

我的目标是为这个控制器的视图创建快速URL。有点像有些网站通过domain/*映射来查看用户的个人资料。除了简单地将此规则放在文件末尾的routes rb中,我还希望防止用户无意中将其URL命名为控制器(或故意命名)。因此,我需要一种快速的方法来获取所有控制器的名称,然后在我的模型中编写一个自定义验证器,告诉用户指定的url是保留的


那么我如何才能得到所有控制器的列表呢

ActiveSupport向类对象添加了一个“subclass”属性,因此您应该能够调用ApplicationController.subclass并获得所有已定义控制器的列表。不能保证这是明智的。

我找到了另一种方法。这是个坏主意吗?我觉得这比不必要地加载所有控制器要好

controller_list = Array.new
Dir["app/controllers/*.rb"].each do |file|
    controller_list.push(file.split('/').last.sub!("_controller.rb",""))
end

冒着听起来微不足道的风险,我想说,也许您可以尝试将控制器名称添加到某个数组中,并在创建新用户之前进行检查?这样应用程序就不会浪费资源,每次创建用户时都会列出目录

当我们扩大规模时,可能需要这样做。现在我只是读了一下目录,但是一旦代码库稳定了一点,这种方法就不会有什么问题了。。。哈