シンプルで一般的なシナリオを想定しましょう。Railsのモデルで2つの 'アクセスレベル'を持つには?
User
モデルはadmin
フィールドです。ユーザーはadmin
フィールドを編集できませんが、管理者は誰のadmin
フィールドも編集できます。
したがって、両方のタイプのユーザーに適切なアクセス権を付与する必要があります。私はRESTfulな方法でこれを提示したい場合は、私は2つのリソースを持っていると思います
は、
resource :user
namespace :admin do
resources :users
end
言う...そして、ここにジレンマ来る - どのように私がコントロールしないadmin
フィールドを変更することができますどこにいないの?
attr_protected :admin
は、ユーザーが管理ステータスを変更できないように設定できます。しかし、私は私がparams[:user].delete(:admin)
両方をさらに悪くなるUsersController
でパラメータを、スクラブすることができます
@user.admin = params[:user][:admin]
のように、Admin::UsersController
でそれのうち特殊なケースを作る必要があるだろうこれらのソリューションの中で私は乱雑に見えます。そのような状況に対処する正しい方法は何ですか?
2つ以上のアクセスレベルがある場合はどうなりますか?
あなたがあなたの悩みを緩和する工夫やdeclarative_authorizationのようなACLのプラグインを試してみましたか? – corroded
まあ、Deviseは認証のみを処理し、declarative_authorizationはモデルごとのレベルで動作しますが、フィールドごとのレベルで制御したいのです。 –