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