2011-09-26 4 views
1

私はリソースタイプPostを持っています。これはCategoryタイプのリソースに関連付けることができます。私は私のroutes.rbをファイルに次のようにありますモデルの特定のプロパティへのルートのスコープ

resources "code", :controller => :posts, :as => :code 
resources "sports", :controller => :posts, :as => :sports 
resources "gaming", :controller => :posts, :as => :gaming 
resources "personal", :controller => :posts, :as => :personal 

だから、これはhttp://host.domain/sportsのように、私に優しいURLから特定のカテゴリにアクセスする所望の効果を与え、それがスポーツのカテゴリーを持つすべての記事を収集します。しかし、これらのリソースをどのように個々のカテゴリに特有のものにするのかについては完全にはわかりません。私はのような何か行うことができたとします

match ":category_name", :to => posts#index 

をしかし、それがすべてをキャッチしますので、それには問題があります。

私は、特定のカテゴリの投稿にアクセスするためのフレンドリーなURL(指定した構造)を維持することを要望しています。思考?

+0

それは、すでにキャッチされていないすべてつかまえる - ルートは順序に依存している、あなたが望む行動を取得するのに十分かもしれません。 –

答えて

1

あなたには多数のリソースがあり、それぞれのURLごとにアクセス可能である必要があります。リソースのうちの4つは同じタイプであり、投稿と判定することができます。 1つのコントローラで機能を提供するのは問題ありません。現在のパスを検出し、有効レコード数スコープを解析して追加するのは簡単です。

もう少し詳しく見てみましょう。同じ種類のデータがあり、おそらく同じ属性を持つため、一般的なパターンは「単一表継承」、それは1つの表とそれ以上のモデルに等しく、列「タイプ」はモデルによって異なります。

コントローラはユーザーの操作とデータフローの間のインターフェイスを提供しているので、各リソースごとに独立したコントローラを使用することをお勧めします。それは一般的な習慣です。より典型的なコードを入力したくない場合は、Resourceful Controllerプラグインなどを使用してください。

はその後、構造を持つことができます。

#routes 
resources :code, sports, :gaming, :personal 

# STI parent and children models 
    model Post < ActiveRecord::Base 
    model Sport < Post 
    ... 
関連する問題