如何在Spree中添加新角色?

时间:2014-06-06 07:45:27

标签: ruby-on-rails devise spree

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

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

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

  1. 那么将角色添加到数据库的最佳方法是什么(我是否将其添加到初始化程序中)?
  2. 如何将此角色的权限添加到“用户”角色?
  3. 在某些时候我会想要扩展权限,但一次只能做一件事。

    我找不到任何明确的指南,说明如何做这些(或至少在过去一两年内更新的任何内容)。如果有人能帮我解决一些说明/例子,我感激不尽。

    P.S。我正在使用Spree 2.2 Stable和Devise Auth。

1 个答案:

答案 0 :(得分:4)

普通用户没有任何特定权限,因为您可以看到能力模型(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 %>