2011-10-24 2 views

答えて

1

あなたはこのようなあなたのコントローラで定義されたメソッドのリストを取得することができます。

TagController.instance_methods(false) 

注意をinstance_methodsに引数としてfalseを渡すことによって、あなたはが継承されていないメソッドのリストを取得すること。

2

ルーティングの競合から実際に保護したいと思うように聞こえますが、これはコントローラのメソッド名に緩く接続されているだけです。

あなたはあなたのActionDispatch::Routing::Routeインスタンスの配列を与える

Rails.application.routes.routes 

から実行時にすべてのルートを取得することができます。

gettable = Rails.application.routes.routes.select do |r| 
    r.verb == 'GET' || r.verb == '' # Watch out for "no verb" -> "all verbs" 
end 

をし、そこから、あなたはパスを抽出して、あなたのタグがそれらのいずれかと一致していないことを確認することができます:次に、GETルートを取得するためのリストであなたを残し

paths = Rails.application.routes.routes. 
     select { |r| r.verb == 'GET' || r.verb == '' }. 
     map { |r| r.path       } 

/this/:that(.:format)スタイルパスはpathsです。

これがすべて整ったら、アプリケーション初期化子が、/tag/名前空間へのルートを追加していないことを確認して、タグデータベースの現在の状態と一致することを確認します。それ以外の場合は、開発中に競合が発生する可能性があります。

これは、あなたの人間/ SEOフレンドリーな/tag/pancakes経路とは別の名前空間で、作成、表示などのための通常の経路を保つ方がよいということを納得させるものです。通常のものを/tagに残してもよいが、フレンドリーなものを/taxonomy/,/category/などに移動することができます。

関連する問題