Ruby on rails 如何从包含分部的视图中运行带参数的SQL查询?

Ruby on rails 如何从包含分部的视图中运行带参数的SQL查询?,ruby-on-rails,Ruby On Rails,我有一个机柜视图,希望显示一个RFID标签列表,这些标签与机柜具有相同的数据中心和位置。我无法理解该命令的语法,无法找到符合条件的所有FRID记录。RFID显示屏设计为机柜视图文件夹的一部分。该命令应获取rfid.data\u center=cabinet.data\u center和rfid.position=cabinet.cabinet\u name的记录。如果我硬编码的字符串,它的工作。代码如下: <% @cabinet.devices.order(:name).each do |

我有一个机柜视图,希望显示一个RFID标签列表,这些标签与机柜具有相同的数据中心和位置。我无法理解该命令的语法,无法找到符合条件的所有FRID记录。RFID显示屏设计为机柜视图文件夹的一部分。该命令应获取rfid.data\u center=cabinet.data\u center和rfid.position=cabinet.cabinet\u name的记录。如果我硬编码的字符串,它的工作。代码如下:

<% @cabinet.devices.order(:name).each do |device| %>
    <% @rfid = Rfid.where("(@rfid.data_center_name = '%#{params[:data_center]}%') AND (@rfid.position = '%#{params[:cabinet_name]}%')").uniq %>

以上内容容易受到SQL注入的攻击,您需要使用参数绑定,而不是自己使用字符串进行绑定。有一种方法可以做到这一点:

Rfid.where(:data_center_name => params[:data_center], :position => params[:cabinet_name]).uniq
鉴于上述情况,您可能需要以下内容:

<% @cabinet.devices.order(:name).each do |device| %>
  <% @rfids = Rfid.where(:data_center_name => device.cabinet.datacenter, :position => device.cabinet.cabinet_name).uniq %>

device.cabinet.datacenter,:position=>device.cabinet.cabinet\u name).uniq%>

写这篇文章有更好的方法,但我们需要了解您的人际关系,更好地了解您想要做什么。

您的模型是什么样子的?机柜、设备和RFID之间的关系是什么?