0

私の目標は、この 1 つのコントローラーのビューのクイック URL を作成することです。一部のサイトでは、ユーザーのプロファイルを表示するための domain/* マッピングがどのように行われているかに似ています。このルールをファイルの末尾にあるルート rb に単純に入れるだけでなく、ユーザーが自分の URL をコントローラーとして誤って (または意図的に ha) 命名することを防止したいと考えています。そのため、コントローラーのすべての名前を簡単に取得する方法が必要です。次に、モデルにカスタム バリデーターを記述して、指定された URL が予約されていることをユーザーに伝えます。

では、すべてのコントローラーのリストを取得するにはどうすればよいでしょうか?

4

3 に答える 3

1

ActiveSupportは'subclasses'プロパティをClassオブジェクトに追加するため、ApplicationController.subclassesを呼び出して、定義されているすべてのコントローラーのリストを取得できるはずです。これが推奨されるという保証はありません。

于 2012-04-29T02:29:13.010 に答える
1

些細なことに聞こえるかもしれませんが、コントローラー名を配列のどこかに追加して、新しいユーザーを作成する前に確認してみてはいかがでしょうか? こうすることで、アプリは、ユーザーを作成する必要があるたびにディレクトリを一覧表示してリソースを浪費することはありません。

于 2012-04-29T03:46:18.227 に答える
0

別の方法を見つけました。これは悪い考えですか?不必要にすべてのコントローラーをロードするよりはましだと思いますか?

controller_list = Array.new
Dir["app/controllers/*.rb"].each do |file|
    controller_list.push(file.split('/').last.sub!("_controller.rb",""))
end
于 2012-04-29T02:48:47.983 に答える