使用ruby变量Rails find_by_sql

时间:2013-06-03 19:16:40

标签: ruby-on-rails

我正在尝试使用find_by_sql选择工作程序。 sql的where部分需要针对某些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 %>

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

你的语法有点误。 当您对值使用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| %>

答案 1 :(得分:1)

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

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