【发布时间】:2019-10-26 07:10:25
【问题描述】:
我正在根据控制器的请求加载区域。可以通过路径或域找到区域。例如,https://example.com/zone123 可以返回两个区域,一个配置了域 example.com,另一个配置了路径 zone123:
zones = Zone.where("path = ? OR domain = ?", request.path, request.server_name)
区域也有一个#public 标志。当我只找到一个区域(通过域或路径)时,我不在乎这个公共标志。但是当我找到两个区域时,我想确保其中至少一个将#public 标志设置为true。
我可以很容易地在 ruby 中做到这一点
if zones.count > 1 && zones.any?(&:public?)
# do stuff
end
但是,有没有办法在 MySQL 中的单个查询中实现这一点? 我想我必须使用子查询,但我不确定如何根据数字添加另一个条件上一次选择返回的结果。
【问题讨论】:
标签: mysql ruby-on-rails activerecord