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

时间:2012-04-29 02:17:29

标签: ruby-on-rails-3 routes controllers

我的目标是为这个控制器的视图创建快速URL。有点像某些网站如何使用域/ *映射来查看用户的个人资料。除了简单地将此规则放在文件末尾的路径rb之外,我还想阻止用户无意中将其URL命名为控制器(或故意ha)。所以我需要一个快速的方法来获取控制器的所有名称,然后我将在我的模型中编写一个自定义验证器,告诉用户指定的URL是保留的。

那么如何获得所有控制器的列表?

3 个答案:

答案 0 :(得分:1)

ActiveSupport将“子类”属性添加到Class对象,因此您应该能够调用ApplicationController.subclasses并获取所有已定义控制器的列表。不保证这是可取的。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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