CanCan の主な機能は、クラスを含む単一のクラスですべての認証コードを非表示にできることです CanCan::Ability
。最も単純なケースでは、そのクラスを呼び出すだけですAbility
。
すでに CanCan を使用している場合は、そのクラスでメソッドを定義していることがわかりますinitialize
。あなたの場合、次のようになります。
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
can :manage, :party do |party|
party.members.include? user
end
can :read, :all
end
end
このコードは、メンバーだけがパーティーを管理 (:update、:create、:destroy) できることを既に確認しています。そのため、ページ上のフォームがすべてのユーザーに表示される場合でも、メンバー以外がフォームを送信すると、コントローラーはエラーを返します。
しかしもちろん、あなたはそれ以上のものを望むので、特定のビューでチェックを追加することができます:
<% if can? :manage, @party %>
<%= form_for @party do |f| %>
<!-- your form here -->
<% end %>
<% end %>
編集する特定のインスタンスはどこ@party
にありますか。