0
試想成員球杆的關係的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 將在授權它之前工作未保存的記錄。見下面的答案。