想象一下俱乐部会员的 has_many 关系:
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
还假设 Clubis_enrollable
在其表中有一个布尔字段。如果为真,用户可以创建与该俱乐部关联的会员资格。如果为 false,则只有管理员可以创建会员记录。
我的问题是:你如何设置 CanCan 的能力.rb 来反映这一点?
评论:有点不寻常的是,Club 表中的一个字段控制着创建会员记录的能力。这不起作用:
can :create, Membership, :club => {:is_enrollable => true}
...因为会员资格在创建之前不存在。 编辑:这不是真的——CanCan将在授权之前处理未保存的记录。请参阅下面的答案。