微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决授予 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。