2011-01-26 13 views
1

task_listがあるかどうかを確認するにはuserモデルをチェックしています。複数のtask_listがある場合は削除できます。それ以外の場合は例外がスローされます。私は基本的にユーザーモデルにdelete_listというメソッドを持っています。user1.delete_list(list1)Railsの承認ですか?モデルとコントローラーを確認してください

CanCanにチェックを入れるかどうかは、コントローラの前のフィルタとして適用するかどうか、それはユーザーモデルでも同様です。推奨される方法は何ですか?

答えて

1

私はDRYのアプローチが、削除が許可されているかどうかをテストするモデルにメソッドを作成することだと思います。その後、あなたのコントローラかability.rbからその方法を使用してください。 IMHO将来的に別の権限システムに変更する可能性がある場合、CanCanから切り離された複雑な権限/ビジネスロジックを持つ方が良いと思います。 can? :destroy, @list

場合:

モデルで

:nessaryまたは使用している場合はあなたのコントローラとビューは、その後もモデルインスタンス上で直接can_destroy_listを使用することができますability.rb

can :destroy, List do |list| 
    user.can_destroy_list(list) 
end 

def can_destroy_list(list) 
    ... Do check here .... 
end 

関連する問題