【问题标题】:Defining a complex ability using CanCanCan使用 CanCanCan 定义复杂的能力
【发布时间】:2014-12-13 17:52:47
【问题描述】:

在我的数据模型中:

Company has_many offices

Employee has_many offices, through: :employee_office(这就是我允许公司管理员允许员工进入某些办公室而不是其他办公室的方式)

Office has_many appointmentsAppointment belongs_to office

我想使用CanCanCan 定义一个功能,它允许EmployeeAppointment 执行操作,前提是EmployeeOffice 上工作,Appointment 是在Appointment 上创建的。

类似这样的伪代码:

Employeecan :manage Appointment, Employee.offices.include?(Appointment.office)

这是我目前所拥有的:

class EmployeeAbility
  include CanCan::Ability

  def initialize(employee)
    can :read,      Company,        :id => employee.company.id
    can :read,      Office,         :id => employee.company.id
    #I'd like to include the above psuedocode here, but I'm not sure how to structure it
  end
end

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby authorization cancan cancancan


    【解决方案1】:
    can :edit, Appointment, office_id: employee.office_ids
    

    【讨论】:

    • 哇,这太简单了。您介意将我指向您在文档中找到此的位置吗?再次感谢!
    • 那不是来自文档,这只是我的想法。不妨看看 cancan 或 cancancan wiki。
    • 听起来不错,谢谢。实际上我什至不知道您可以在 has_many 关系上调用 .office_ids,所以这非常有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    相关资源
    最近更新 更多