【问题标题】:Advanced Role Permissions in RailsRails 中的高级角色权限
【发布时间】:2014-02-26 06:28:45
【问题描述】:

我有一个应用程序,其中可以管理不同层次的权限,或者只是创建/查看不同的对象。我的故障示例:

  • 房东可以查看餐厅预订并进行编辑,但无法创建
  • 门卫可以创建新的预订并进行编辑。
  • 客户服务代表(我们这边)几乎可以做任何事情。
  • 超级管理员可以做任何事情。

我可以使用 gem 或可安装的引擎来解决这个问题吗?最佳做法是什么?

【问题讨论】:

  • 是的,使用 cancan 和 rolify gems 的组合

标签: ruby-on-rails permissions gem roles


【解决方案1】:

Cancan 是一个不错的选择,但最近我一直在寻找 Pundit 作为更好的选择。在你的情况下,你会有这样的事情:

# app/policies/reservation_policy.rb
ReservationPolicy = Struct.new(:user, :reservation) do
  def create?
    user.service_rep? || user.doorman?
  end
end

然后在你的控制器中:

# app/controllers/reservations_controller.rb
class ReservationsController < ApplicationController
  def create
    @reservation = Reservation.new(reservation_params)
    authorize @reservation
    @reservation.save

    respond_with(@reservation)
  end
end

这未经测试,需要根据您的具体情况进行调整,但我希望这是一个起点。

【讨论】:

    猜你喜欢
    • 2016-11-28
    • 2022-08-18
    • 2019-07-29
    • 2011-06-25
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 2014-02-03
    • 2018-01-18
    相关资源
    最近更新 更多