Ruby 如何使用参数测试create操作的cancan能力?

Ruby 如何使用参数测试create操作的cancan能力?,ruby,rspec,cancan,Ruby,Rspec,Cancan,我的能力是: def initialize(user) partner_id ||= user.partner.id can :create, Employee, :partner_id => partner_id 这在before块中: before(:each) do @employee = Factory :employee, role: "manager" @partner = @employee.partner @some_other_partner = F

我的能力是:

def initialize(user)
  partner_id ||= user.partner.id
  can :create, Employee, :partner_id => partner_id
这在before块中:

before(:each) do
  @employee = Factory :employee, role: "manager"
  @partner = @employee.partner
  @some_other_partner = Factory :partner
  @subject = EmployeeAbility.new( @employee )
end
我的肯定规格是(这一个通过):

我的负面规范是这样的(这一个失败):


我应该如何声明该能力,以测试创建的员工是否属于某个特定的合作伙伴而不是其他合作伙伴?

您可以使用类的实例而不是类本身来检查该能力:

can? :create, Employee.new(:partner_id => 3)

我理解正确吗?我应该传递一个对象,该对象具有将由:create方法设置的属性。简单:)
it { @subject.should_not be_able_to(:create, Employee, partner_id: @some_other_partner.id ) }
can? :create, Employee.new(:partner_id => 3)