Rails范围限制在哪里之前

我想在预先形成where查询之前能够限制我的结果。 我正在尝试做一个实验,我会查看50个响应的随机样本,然后想要计算回答是的用户数。 如果我做response.limit(50).where(:chosen_answer => 'yes').count我得到50因为它response.limit(50).where(:chosen_answer => 'yes').count形成整个查询的限制。

有没有办法将它分成两个单独的查询?

您可以将其作为单个查询执行,但使用嵌套查询:

 # get 50 inner_query = response.select('id').limit(50).to_sql # then filter within those 50 results = response.joins("INNER JOIN #{inner_query} x on x.id = responses.id").where(...).count