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