我遇到的情况是找到与所应用的过滤器匹配的人员。为此,我为匹配过滤器的人员构造了查询(选择与过滤条件匹配的人员的ID)。然后获取已过滤人员的人员详细信息。
m = ActiveRecord::Base.connection.exec_query(filter_blocks_query.join(' INTERSECT ')) unless filter_blocks_query.empty?
Person.where(id: m.rows.flatten)
但这将执行结果,然后过滤与过滤的ID匹配的人员。有什么方法可以使其像单个查询一样。
filter_blocks_query
是原始sql语句。