授予 cancan 自动创建的能力是否意味着可以访问新动作?
Does granting cancan ability to create automatically imply access to new action?
我有一个康康的能力,说用户可以 create
Message
如果它是他们的
can [:create], [Message] do |message|
message.user_id == user.id && message.conversation.sender_id == user.id
end
这按预期工作,但令人惊讶的是,此 rspec 测试用户是否可以访问消息的 new
操作失败:
it 'A user should not be able to access their own message new action' do
expect(ability).to_not be_able_to(:new, message)
end
所以用户 可以 访问他们消息的 new
操作。为什么是这样?访问 create
操作是否也意味着访问 new
?还是我在某处误解或犯了错误?
是 :new
是 :create
的别名
看这里:
https://github.com/CanCanCommunity/cancancan/wiki/Action-Aliases
我有一个康康的能力,说用户可以 create
Message
如果它是他们的
can [:create], [Message] do |message|
message.user_id == user.id && message.conversation.sender_id == user.id
end
这按预期工作,但令人惊讶的是,此 rspec 测试用户是否可以访问消息的 new
操作失败:
it 'A user should not be able to access their own message new action' do
expect(ability).to_not be_able_to(:new, message)
end
所以用户 可以 访问他们消息的 new
操作。为什么是这样?访问 create
操作是否也意味着访问 new
?还是我在某处误解或犯了错误?
是 :new
是 :create
看这里:
https://github.com/CanCanCommunity/cancancan/wiki/Action-Aliases