【问题标题】:CanCan - users / tickets / employeesCanCan - 用户/票证/员工
【发布时间】:2013-09-17 01:08:24
【问题描述】:

我的联想如下:

User has_many :employees

Employee belongs_to :user

Ticket has_many :employees

我的路线是正常的,没有嵌套这些模型, 如何为分配的员工编写能力?

注意用户ID与员工ID不同

能力.rb

if user.has_role? :ticket_manager
      can :manage, Ticket, :employee_id => #how to match the employee.id
    end

【问题讨论】:

  • 您的要求并不完全清楚。你能详细说明一下吗?也许可以举个例子?

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 cancan


【解决方案1】:

我猜你可以这样做:

if user.has_role? :ticket_manager
  can :manage, Ticket do |ticket|
    ticket.employees.map(&:user_id).include?(user.id)
  end
end

但是,正如文档https://github.com/ryanb/cancan/wiki/Defining-Abilities-with-Blocks 中所述,请注意,这仅在存在实例对象时才有效。例如,在检查索引权限时不会评估该块。

【讨论】:

  • 用户 ID 与员工 ID 不同,我已将其添加到我的问题中。
  • 是的,我知道。这就是我在员工中使用字段 user_id 的原因。用户可以为其员工管理工单吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2012-12-14
  • 1970-01-01
相关资源
最近更新 更多