4

だから私は、私の前の多くの人と同じように、私のアプリにアイテムを「好き」という概念を導入しています. いいね! の対象となるリソースにはさまざまな種類 (投稿、返信、リスト、アクションなど) があり、ルーティング ファイルを構成する最適な方法を探しています。

これには、次のような routes.rb ファイルの作成が含まれる場合があります。

resources lists do
  resources posts do
    resources replies do
      resources likes
    end
    resources likes
  end
  resources likes
end

そして、load_and_authorize の意味がわからない LikesController - ing:

class LikesController < ActionController:Base

  load_and_authorize :list # only works if list_id exists in this request
  load_and_authorize :post, through: :list # only works if post_id exists in this request

  # and so on...

end

これを行うより良い方法はありますか?すべてが投稿される /likes パスを持つことだけを考えていましたが、それは load_and_authorize を使用できないことを意味し、特定のリスト、投稿、返信などに対して Likes#index のようなことを賢明に行うのが難しいことも意味します.

ありがとう。

4

1 に答える 1

0

Likes を他のリソース内にネストする代わりに、次のことを試してください。

scope "/lists/:list_id(/posts/:post_id(/replies/:reply_id))" do
  resources :likes
end

:list_idパラメータを必要とし、オプションで と を取る LikesController ルートの単一のセットを取得する必要があると思い:post_idます:reply_id。URL はかなり醜いですが、4 重にネストされた Rails リソース ルートのデフォルトに一致させようとしています。少しきれいにすることをお勧めします。

編集:これには、LikesController に追加のロジックも必要になるようです。たとえば、取得したパラメーターを検出し、それらのオブジェクトのみを load_and_authorized する before_filter などです。しかし、それは私には解決可能な問題のように思えますか?

于 2012-09-19T14:00:22.417 に答える