0

我有一个机柜视图,并希望显示与机柜具有相同数据中心和位置的 RFID 标签列表。我无法弄清楚该命令的语法来查找符合条件的所有 FRID 记录。RFID 显示屏设计为橱柜视图文件夹的一部分。该命令应获取 rfid.data_center = cabinet.data_center AND rfid.position = cabinet.cabinet_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 %>
4

1 回答 1

1

您上面的内容容易受到 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 %>

有更好的方法来写这个,但我们需要看看你的关系,更好地了解你想要做什么。

于 2013-03-11T17:05:20.033 回答