はクラブのメンバーシップのためにhas_manyの関係を想像してみて:CanCanの機能を他のモデルに基づいて作成を制御するように構造化するにはどうすればよいですか?
end
class Club < ActiveRecord::Base
has_many :memberships, :dependent => :destroy
has_many :users, :through => :memberships
validates :name, :is_enrollable, :presence => true
end
class Membership < ActiveRecord::Base
belongs_to :club
end
は、クラブがそのテーブルにブールis_enrollable
フィールドを持っていることも想定します。真の場合、ユーザーはそのクラブに関連付けられたメンバーシップを作成することができます。 falseの場合、管理者だけがメンバーシップレコードを作成できます。
私の質問は、これを反映するためにCanCanのability.rbをどのように設定するのですか?
コメント:Clubテーブルのフィールドがメンバーシップレコードを作成する機能を制御するという点で、少し珍しいことです。これは動作しません:
can :create, Membership, :club => {:is_enrollable => true}
...メンバーシップが作成される前に存在しないためです。 編集:それは本当ではない - CanCan は、それを許可する前に保存されていないレコードで動作します。以下の回答を参照してください。