2012-04-29 71 views
0

我的目標是爲這個控制器的視圖創建快速URL。有點像一些網站有域/ *映射到查看用戶的配置文件。除了簡單地將該規則放在文件末尾的路由rb中之外,我還想阻止用戶將他們的URL作爲控制器無意(或故意的)命名爲控制器。所以我需要一種快速的方法來獲取控制器的所有名稱,然後我只需在我的模型中編寫一個自定義驗證器來告訴用戶指定的URL是保留的。Rails 3,從模型中獲取所有控制器名稱的列表?

那麼如何獲得所有控制器的列表?

+0

http://stackoverflow.com/questions/1564278/how-to-programmatically-list-all-controllers-in-rails – Kris 2012-05-30 11:23:23

+0

我處於開發模式... ha – Parris 2012-05-30 19:11:42

回答

1

冒着聽起來微不足道的風險,我想說你也許可以嘗試在某處添加控制器名稱並在創建新用戶之前進行檢查?這樣,每次需要創建用戶時,應用程序都不會浪費列出目錄的資源。

+0

這可能是怎麼回事當我們放大時需要發生。現在我只是閱讀目錄,但是一旦代碼基礎再穩定一點,這種方法就沒有問題了。 – Parris 2012-05-07 19:12:13

1

ActiveSupport爲Class對象添加一個'subclass'屬性,所以你應該能夠調用ApplicationController.subclasses並獲得所有定義的控制器的列表。沒有保證,這將是明智的。

0

我發現了另一種方式來做到這一點。這是一個壞主意嗎?我覺得,它比無需加載所有控制器更好?

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