4

Rails アプリを作成しているときに、他の複数のリソースのコンテキストでリソースにアクセスできるようにし、コンテキストに応じて少し異なる動作をさせたいという状況に最近遭遇しました。このようなものを処理する最良の方法は何ですか? 現在、複数の親リソース内にリソースをネストすることでこれを処理しています。しかし、これはやや面倒になってきており、これを行うためのより良い方法があるかどうかを知りたい.


例:

UserRights モデルがあり、ユーザーが個々のユーザーまたはユーザー グループ全体のいずれかのコンテキストでこれらの権限を表示、作成、および編集できるようにしたいとします。

resources :users do
  resources :user_rights, context: :user # params[:context] = :user
end

resources :groups do
  resources :user_rights, context: :group
end

これにより、ルートが生成されます。

users/:user_id/user_rights/:id
groups/:group_id/user_rights/:id

次に、コントローラーで、コンテキストに基づいて少し異なる処理を行います。

これにより、ユーザーがグループが持つすべての権限、またはユーザーが持つすべての権限を表示および編集できるクライアント側でかなり優れた UI を提供できます。これを行うより良い方法はありますか?

4

1 に答える 1

0

いいえ。必要なコンテキストが多いほど、残念ながら複雑さが増します。アプリに API を追加すると、ネストされたリソースではなく基本的なリソースが必要になることが多いため、アプリはさらに複雑になる可能性があります。私が見つけた唯一の解決策は、最も使用されるルートを作成しないことでバランスを取り、それらのリクエストを適合させることで残りを排除することです. 紛らわしいです、はい!

于 2012-08-08T16:42:20.750 に答える