如何使用ransack查询链接范围

时间:2015-09-03 12:48:16

标签: ruby-on-rails ruby activerecord ransack

用户提交搜索employers的搜索查询。我想首先使用scope来过滤employers表中的记录,然后我想对从activerecord::relation返回的scope对象运行ransack查询。

特别是按顺序。重要的是首先运行scope,因为它只返回选择数量的记录,然后可以进一步过滤掉ransack查询。在我的情况下,首先运行ransack查询然后在返回上运行scope查询运行速度非常慢,因为ransack查询可能会返回许多记录。

这听起来像将查询链接在一起的工作。我知道如何将常规范围链接在一起:

# example
# `active`, `from_department_stores`, and `small_company` are all scopes
@employers = Employer.active.from_department_stores.small_company 

但我不知道如何将ransack查询链接到作用域,并以首先运行作用域的方式进行。

代码:

@q = Employer.ransack(params[:q])
# Pretty sure this will not work, but hopefully it provides a good idea
# of what I am trying to do
@employers = Employer.active.@q.result

Ransack Documentation

1 个答案:

答案 0 :(得分:4)

这对你有用。谢谢

@employers = Employer.active.ransack(params[:q]).result