使用ruby变量Rails find_by_sql

我正在尝试使用find_by_sql选择工作程序。 sql的where部分需要针对某些ruby代码进行测试:

我试过这个:

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

但是,它似乎没有预处理

谢谢您的帮助!

你的语法有一点错误。 find_by_sql以及where使用时需要数组的位置? 价值观念。
此外,无需插入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| %> 

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

 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 %>