Ruby on rails Rails作用域返回变量/在另一个方法中联接

Ruby on rails Rails作用域返回变量/在另一个方法中联接,ruby-on-rails,Ruby On Rails,我正在筛选模块的角色访问权限 scope :for_user, lambda { |user| if user.super_admin? self else region = Region.find_by(name: user&.role&.name) if region.present? joins(:location) .where(location_id: region.location_ids) end end } de

我正在筛选模块的角色访问权限

scope :for_user, lambda { |user|
  if user.super_admin?
   self
  else
   region = Region.find_by(name: user&.role&.name)
   if region.present?
    joins(:location)
     .where(location_id: region.location_ids)
   end
 end
}
def viewable(user)
 return user.super_admin? || user&.role&.name == region.name
end
作用域在过滤器中起作用。简而言之,如果超级管理员的角色名与存在位置的区域名匹配,则需要在超级管理员或用户上进行筛选,以显示存在的所有事件。但是…查看是由viewable方法定义的。所以我的问题是如何在OR中找到else语句

我试着将整个范围复制到可视范围,但最终得到的结果是

未定义的方法“连接”


在没有使用join语句的情况下,我从用户那里找到了位置

保持这种状态,以防有人遇到这种情况:

return user.super_admin? || user&.role&.name == location.region.name