ruby-on-rails - 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 语句的情况下从用户点击位置时出现空白。
解决方案
保持这一点,以防有人遇到这种情况:
return user.super_admin? || user&.role&.name == location.region.name
推荐阅读
- python - 收到错误:无法将表达式转换为浮点数
- roku - 尝试在任务节点的 GetContent() 中再添加一个子项
- amazon-web-services - 将 AWS Elastic Beanstalk (Linux 2/Node.js) 上的默认代理替换为 lua-resty-auto-ssl 以实现多租户 SSL
- powershell - 在 Powershell 中执行 POST 命令
- python - Python 在哪里以及如何存储产生的数据?
- protoc - Cli 生成协议缓冲区
- reactjs - 如何获取只需要获取一次的数据
- amazon-web-services - AWS Lambda - 重复同步触发,直到满足条件
- swift - iOS 14 / UI 测试 DatePicker
- android - 从前台服务通知创建活动时调用什么方法?