0

Rails 3.1 アプリで Devise と Cancan の gem を使用しています。

ユーザーにいくつかの列を追加しました。

機能を定義することができ、それらは正常に機能します。機能していることはわかりますが、Devise またはユーザーコントローラーにアクセスできないため、アクション (:update など) を許可解除する方法がわかりませんか?

それはどのように機能しますか?

4

2 に答える 2

1

ユーザーにフィールドを追加し、: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

于 2012-11-21T01:00:12.650 に答える
1

または、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
 ...
于 2012-11-21T01:21:07.153 に答える