0

ロールの簡単なチュートリアルはありますか? Deviseは承認のための優れた簡単なソリューションであることがわかりました。そして、Rolify を使用した Cancanに関しては、私のような初心者にとって混乱の日食があります。

現在、私はrole.rbでロールを定義しています:

if user.has_role? :admin
  can :manage, :all
else
  can :read, :all
end

そして、コントローラーで、次の例のようにチェックしています。

def destroy
 ability = Ability.new(current_user)
 if ability.can? :delete, :all then
   @post = Post.find(params[:id])
   @post.destroy
 end

 respond_to do |format|
   ...
end

私の質問は - 私は能力ができるかどうかをチェックするのに奇妙な感じがありますか? :delete, :all thenは、この例では冗長です。私のコードは大丈夫ですか、それとも本当に間違っていますか? ありがとう

4

2 に答える 2

1

問題の投稿を削除できるかどうかを確認する方が理にかなっています。管理者は何でも削除できますが、通常のユーザーは自分が所有するコンテンツのみを削除します。

@post = Post.find(params[:id])
authorize! :delete, @post

また、コードが実際には一致しないため、cancan のドキュメントを読むことに時間を費やすことをお勧めします。

于 2012-05-31T23:38:13.780 に答える
0

あなたの「破壊」方法は次のようになると思います:

def destroy
 @post = Post.find(params[:id])
 if can? :delete, @post then 
   @post.destroy
 end

 respond_to do |format|
   ...
end

cancanのドキュメントにあるため:

現在のユーザーの権限は、can? を使用して確認できます。そしてできませんか?ビューとコントローラーのメソッド。

于 2012-12-27T06:54:20.223 に答える