Rails 3.1 アプリで Devise と Cancan の gem を使用しています。
ユーザーにいくつかの列を追加しました。
機能を定義することができ、それらは正常に機能します。機能していることはわかりますが、Devise またはユーザーコントローラーにアクセスできないため、アクション (:update など) を許可解除する方法がわかりませんか?
それはどのように機能しますか?
Rails 3.1 アプリで Devise と Cancan の gem を使用しています。
ユーザーにいくつかの列を追加しました。
機能を定義することができ、それらは正常に機能します。機能していることはわかりますが、Devise またはユーザーコントローラーにアクセスできないため、アクション (:update など) を許可解除する方法がわかりませんか?
それはどのように機能しますか?
ユーザーにフィールドを追加し、:approved
管理者のみがアクセスできるようにします。
ApplicationsController
すべてを DRY に保つため、 にフィルタを記述します。承認の使用を開始すると、それを頻繁に使用することになります。
def verify_approval
unless current_user.approved
flash[:error] = I18n.t("not_approved")
redirect_to(root_path)
end
end
次に、ユーザーが権限を必要とする場所でそのフィルターを使用します。
class RandomsController
before_filter :verify_approval, only: [:update]
バム、やった。編集の工夫も無しUsersController
。
または、ability.rb で以下を使用してみてください
if user.role? :admin
can [:create, :read], [Model1, Model2]
end
if user.role? :user
can [:read], Model1, :id => user.id
end
これにより、管理者は作成または読み取りを許可されますが、更新は許可されません。また、Model1 がユーザーに属している場合は、ユーザーが Model1 を読み取ることができるようにします。「copy_model」などのカスタム アクションを作成する場合、同じものを ability.rb に追加できます。
...
can [:copy_model, :read], Model1, :id => user.id
...