シナリオは次のとおりです。
私のサイトには何人かのユーザーがいます。ユーザーにはロールがあり、関連するロールはadmin
とnormal
です。モデルもあります。 と呼びましょうSomeModel
。
管理レイアウトを使用するサイトのバックエンドを作成しました。すべての管理者は、コンテンツを編集するための完全なアクセス権を持っています。
この関係で問題が発生します: User -> owns -> SomeModel。これは、管理者以外 のユーザーが のインスタンスを所有SomeModel
でき、このインスタンスのデータを編集できる必要があることを意味します。
のコントローラーにSomeModel
は、管理者と通常のユーザーの両方に対応する編集アクションがあります。
ただし、通常のユーザーに管理レイアウトを表示させたくありません。現在、これを行う方法は次のとおりです。
if current_user.admin?
render :layout => 'admin'
end
ユーザーが管理者でない場合、デフォルトで標準レイアウトになります。私はこれをすべてのアクションSomeModel
に取り入れていますが、Rails のやり方とは思えません。
より良い方法はありますか?