1

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

助けてくれてありがとう!

4

2 に答える 2

6

構文に少し誤りがあります。 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| %>
于 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 に答える