首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails:如何使cancan在每个对象上工作?

Rails:如何使cancan在每个对象上工作?
EN

Stack Overflow用户
提问于 2016-12-22 03:56:46
回答 2查看 126关注 0票数 1

user.rb

代码语言:javascript
运行
复制
def has_delete_role? name
  roles.each do |n|
    return true if n == name
  end
end

ability.rb

代码语言:javascript
运行
复制
if user.has_delete_role? :business_delete
  can :destroy, Business
end

index.html.erb

代码语言:javascript
运行
复制
<% if can? :destroy, @business %>
  <%= link_to 'delete', business_path(@business.id), method: :delete%>
<% end %>

这段代码允许有权访问删除按钮的用户。在这里,如果用户有权限,他可以访问所有对象的删除按钮。

例:业务有10个对象id =1到id = 10,如果用户有权限,可以访问所有10个删除按钮。

但是现在我想基于对象来设置权限。

例: Buisness也是1到10,用户只能看到按钮2和5,因为在用户数据表中有一个名为auth_ids []的字段,它存储2,5

如何做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-22 05:00:42

您可以使用:

代码语言:javascript
运行
复制
can :destroy, Business, id: user.auth_ids
票数 1
EN

Stack Overflow用户

发布于 2016-12-22 04:36:38

您可以设置一个条件,类似于这里的指南:https://github.com/CanCanCommunity/cancancan/wiki/Defining-Abilities

代码语言:javascript
运行
复制
can :destroy, Business, Business.where('id = ?', user.auth_ids)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41275549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档