授予 cancan 自动创建能力是否意味着可以访问新操作?

问题描述

我有一个 cancan 能力,它说用户可以 create a 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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...