1

我正在尝试使用 find_by_sql 选择工单。该where部分 sql 需要针对一些 ruby​​ 代码进行测试:

我试过这个:

<% Workorder.find_by_sql("SELECT * FROM workorders w JOIN empgroups e USING (workgroup_id) WHERE e.employee_id = ?, <%= current_user.employee.id %>").each do |workorder| %>

但是,它似乎没有预处理<%= current_user.employee.id %>

谢谢您的帮助!

4

2 回答 2

6

你的语法有一点错误。 find_by_sqlwhere在您对值使用?符号时需要一个数组。
此外,无需插入current_user.employee.id
将您的查询替换为:

<% Workorder.find_by_sql(["SELECT * FROM workorders w JOIN empgroups e USING (workgroup_id) WHERE e.employee_id = ?", current_user.employee.id]).each do |workorder| %>
于 2013-06-03T19:23:41.827 回答
0

首先,最好将选择代码放在控制器端,如下所示:

def your_controller_method
  @workorders = Workorder.find_by_sql('SELECT * FROM workorders w JOIN empgroups e USING (workgroup_id) WHERE e.employee_id = ?', current_user.employee.id)
end

然后你可以在视图中使用它:

<% @workorders.each do |workorder| %>
<% end %>
于 2013-06-03T19:23:48.450 回答