权威人士:基于连接器表的正确访问方式

时间:2018-09-11 17:35:16

标签: ruby-on-rails pundit

Pundit的新知识。我有3个模型和一个joiner表; UserCustomerRoute模型,以及一个联接表,该联接表允许用户使用路由。客户属于特定路线。

我只想授权用户查看客户,如果他/他在routes_users连接表中有一条路由。

我发现自己有很多方法可以做到这一点。但是,最佳的实现方式是什么?

customer_policy.rb

def show?
  if user.admin? || user.sales_manager?
    true
  else
    user.routes.map(&:id).include? record.route_id
  end
end

1 个答案:

答案 0 :(得分:1)

使用 .map 并不是一个好主意,因为它将填充来自数据库的所有路由以便在本地搜索它们,最好是使用.where而不是{{1} },如下所示:

.map