【问题标题】:How to add a new role in Spree?如何在 Spree 中添加新角色?
【发布时间】:2016-11-24 15:28:17
【问题描述】:

我目前在我的系统中有两个角色,默认为“用户”和“管理员”。

我想添加一个名为“供应商”的新角色。

目前供应商角色需要与普通用户相同。我有“前端”个人资料编辑页面。用户和供应商之间的唯一区别是供应商可以填写更多的字段。我计划通过检查 spree_has_role 的角色来允许这些额外的字段?('供应商')

  1. 那么将角色添加到数据库的最佳方法是什么(我是否将其添加到初始化程序)?
  2. 然后如何将此角色添加为与“用户”角色相同的权限?

有时我会想扩展权限,但一次只做一件事。

我找不到任何明确的指南来说明如何执行这些操作(或至少在过去一两年内更新过的任何内容)。如果有人可以帮助我提供一些说明/示例,我将不胜感激。

附:我正在使用带有 Devise Auth 的 Spree 2.2 Stable。

【问题讨论】:

    标签: ruby-on-rails devise spree


    【解决方案1】:

    普通用户没有任何特定权限,您可以在能力模型 (https://github.com/spree/spree/blob/master/core/app/models/spree/ability.rb) 中看到。您可以使用以下命令从控制台在数据库中创建角色:

    Spree::Role.create(name: 'Supplier')
    

    如果你需要确定你在数据库中有这个角色并且你想把它放到一个初始化器中,一定要检查这个角色是否还没有被创建。你可以使用类似的东西:

    Spree::Role.find_or_create_by_name('Supplier')
    

    此时您可以在配置文件编辑视图中使用类似:

    <% if @user.has_spree_role?('Supplier') %>
      ...
      additional fields here
      ...
    <% end %>
    

    【讨论】:

    • 在 Rails 4 中:Spree::Role.find_or_create_by(name: 'supplier')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    相关资源
    最近更新 更多