首页 > 解决方案 > 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
}
def viewable(user)
 return user.super_admin? || user&.role&.name == region.name
end

范围在过滤器中起作用。简而言之,如果他们的角色名称与存在位置的区域名称匹配,则需要过滤 super_admin 或来自用户的区域名称,从而显示所有存在的事件。但是...查看是由 viewable 方法定义的。所以我的问题是如何点击 OR 中的 else 语句。

我尝试将整个范围复制到可见但我最终得到

未定义的方法“加入”

我在不使用 join 语句的情况下从用户点击位置时出现空白。

标签: ruby-on-rails

解决方案


保持这一点,以防有人遇到这种情况:

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

推荐阅读