Ruby on rails RubyonRails-使用类似查询问题的sql查找

Ruby on rails RubyonRails-使用类似查询问题的sql查找,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我需要定义如下所示的范围。为此,我使用了“按sql查找”方法。我想问一下这个问题。但是当我像这样构造查询时,我得到了以下错误 scope :search_by_id_title, -> (text) do WorkOrder.find_by_sql["SELECT work_orders.id, work_orders.line_item_header_id, work_orders.created_by_id, work_orders.created_on, ........

我需要定义如下所示的范围。为此,我使用了“按sql查找”方法。我想问一下这个问题。但是当我像这样构造查询时,我得到了以下错误

scope :search_by_id_title, -> (text) do

    WorkOrder.find_by_sql["SELECT work_orders.id, work_orders.line_item_header_id, work_orders.created_by_id, work_orders.created_on, 
............WHERE (line_item_headers.item_location_id = 1) AND (customers.title LIKE, #{text}%)"]
end
================错误===============

wrong number of arguments (given 0, expected 1..2)
在控制器中,我调用上述作用域,如下所示

@work_orders = WorkOrder.search_by_id_title(params[:search])
WorkOrder.joins(:line_item_headers).where('line_item_headers.item_location_id = 1 AND customers.title LIKE ?', "%#{text}%")

有人能帮我解决这个问题吗?

我没有使用find\u by\u sql,我通常使用where子句,但在这里我会这样写

WorkOrder.joins(:line_item_header).where('line_item_headers.item_location_id = 1 AND customers.title LIKE ?', "%#{text}%")
我猜你的数据库设置在这里。如果每个工单属于行项目标题,请执行上述操作。如果每个工单都有许多行项目标题,请执行以下操作

@work_orders = WorkOrder.search_by_id_title(params[:search])
WorkOrder.joins(:line_item_headers).where('line_item_headers.item_location_id = 1 AND customers.title LIKE ?', "%#{text}%")

问号允许您将
文本
变量置于初始查询语句之外。它也适用于多个问号。查看第2.2节。

我没有使用find_by_sql,我通常使用where子句,但在该子句中,我会编写如下内容

WorkOrder.joins(:line_item_header).where('line_item_headers.item_location_id = 1 AND customers.title LIKE ?', "%#{text}%")
我猜你的数据库设置在这里。如果每个工单属于行项目标题,请执行上述操作。如果每个工单都有许多行项目标题,请执行以下操作

@work_orders = WorkOrder.search_by_id_title(params[:search])
WorkOrder.joins(:line_item_headers).where('line_item_headers.item_location_id = 1 AND customers.title LIKE ?', "%#{text}%")

问号允许您将
文本
变量置于初始查询语句之外。它也适用于多个问号。查看第2.2节。

如何称呼范围?我是这样称呼范围的@工作订单=工作订单。按id标题搜索(params[:search])请在问题Yes@Vasilisa doneLooks中发布错误的完整回溯,就像您应该将
[]
更改为
()
通过sql
查找范围如何调用?我这样调用范围@工作订单=工作订单。按标题搜索(参数[:搜索])请在问题Yes@Vasilisa doneLooks中发布错误的完整回溯,就像您应该将
[]
更改为
()
通过sql查找一样