2013-06-03 2 views
0

Я пытаюсь выбрать рабочие устройства, используя find_by_sql. where часть SQL нужно проверить на какой-рубинового код:Rails find_by_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

В вашем синтаксисе есть небольшая ошибка. 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| %> 
+0

Спасибо за помощь! – Reddirt

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

Хорошая точка - спасибо! – Reddirt

Смежные вопросы