我在Rails应用程序中使用Xeditable和RABL。
我有一个属于workorder的workgroup。我想将workorder分配给那个workgroup中的一个employee。
我在Xeditable中使用它作为源代码
data-source="/employees.json?workgroup=<%= workorder.workgroup.id%>"这是我在employee控制器中尝试的代码:
def index
@employees = Employee.order(:first_name)
@employees = Employee.joins(:empgroups).where(:workgroup_id => params[:workgroup]) if params[:workgroup].present?
end 这是生成的SQL:
SELECT "employees".* FROM "employees" INNER JOIN "empgroups" ON "empgroups"."employee_id" = "employees"."id" WHERE "employees"."workgroup_id" = 2问题是哪里应该是‘WHERE“,”workgroup_id“=2。
如何更改这一行代码?
@employees = Employee.joins(:empgroups).where(:workgroup_id => params[:workgroup]) if params[:workgroup].present?谢谢你的帮助!
发布于 2014-05-29 15:57:51
您可以使用嵌套的散列语法:
@employees = Employee.joins(:empgroups).where(
empgroups: { workgroup_id: params[:workgroup] }
) if params[:workgroup].present?发布于 2014-05-29 15:58:10
这应该是可行的:
Employee.joins(:empgroups).where(:empgroups => {:workgroup_id => params[:workgroup]}):workgroup_id实际上是联接表上的属性/列,而不是正在查询的基表上的属性/列,因此需要在where子句中指定该列的位置。
记住,在紧要关头,您也可以为where子句键入SQL,但也必须记住正确引用正确的表。
Employee.joins(:empgroups).where("empgroups.workgroup_id = ?", params[:workgroup])https://stackoverflow.com/questions/23937483
复制相似问题