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 将在授权它之前工作未保存的记录。见下面的答案。