1

ユーザーの役割に基づいた「レイヤー」がほとんどない、非常に複雑な Rails アプリケーションがあります。

  1. 管理層
  2. ラベル レイヤー
  3. バンド層
  4. ファン層

各レイヤー/名前空間には、レンダリングされるレイアウトとオプションが少し異なります。これらの違いは非常に大きいため、それぞれを強く分離する必要があります。

ルーティング名前空間を使用して、各レイヤーを適切な URL 名前空間の下に配置すること/adminもでき/labelます。ただし、このソリューションで私が気に入っているのは、各アプリケーション パーツのコントローラー、モデル、およびビューをレイヤーのサブフォルダーに分離できることです。/band/fan

適切なレイヤーは current_user ロールによって決定できるため、application_controllerパス パターンを使用するのではなく、目的の名前空間を手動で設定できると便利です。

そのようなことは可能ですか?

4

1 に答える 1

1

1)

これはスコープとロールの例です (warden gem を使用)

scope module: lambda { |request| request.env['warden'].user.role } do
 resources :posts, :comments
end

ここでのルーティングに関する詳細情報: Rails Routing

この例では、ユーザーがログインしていない場合とモジュールが存在しない場合は処理されません。それが正しい道かどうかはわかりませんが、解決策です。

2)

私が持っている2番目のアイデアは、異なるモジュールを経由するのではなく、展示戦略パターンを使用することです

このアイデアについて私が気に入っているのは、それがよりオブジェクト指向であるということですが、「Rails のやり方」というほどではないかもしれません。

于 2013-10-26T18:16:19.090 に答える