Ruby on rails 如何在查询中包含重复记录?
给定包含重复项的零件ID数组,如何在我的Ruby on rails 如何在查询中包含重复记录?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,给定包含重复项的零件ID数组,如何在我的零件模型中找到相应的记录,包括重复项 零件ID的示例数组是[“1B”、“4”、“3421”、“4”]。如果我们假设我有一条与这些值对应的记录,我希望看到总共返回4条记录,而不是3条。如果可能的话,我希望能够对返回的任何内容进行额外的SQL操作 以下是我目前使用的不包括重复项的内容: @parts = Part.where(:part_id => params[:ids]) 作为一个小背景,我试图上传一个XML文件,其中包含某个项目中使用的部件列表。
零件
模型中找到相应的记录,包括重复项
零件ID的示例数组是[“1B”、“4”、“3421”、“4”]
。如果我们假设我有一条与这些值对应的记录,我希望看到总共返回4条记录,而不是3条。如果可能的话,我希望能够对返回的任何内容进行额外的SQL操作
以下是我目前使用的不包括重复项的内容:
@parts = Part.where(:part_id => params[:ids])
作为一个小背景,我试图上传一个XML文件,其中包含某个项目中使用的部件列表。我的应用程序旨在解析XML文件,并将其中列出的零件与我的零件数据库进行比较,以便查看零件的重量。这些项目有时会包含不同部分的副本,所以这就是我在这里要解释的 我能想到的唯一方法就是使用
map
@parts = params[:ids].map { |id| Part.find_by_id(id) }
很难说清楚您在做什么,您是从xml还是从数据中查找权重
parts_xml = some_method_that_loads_xml
part_ids_from_xml = part_xml.... # pull out the ids
parts = Part.where("id IN (?)", part_ids_from_xml)
现在您有了两个数组(xml数据和“匹配”数据库记录),您可以使用select
或detect
按part\u id进行内存中的查找
part_ids_from_xml.each do |part_id|
weight = parts.detect { |item| item.id == part_id }.weight
puts "#{id} weighs #{weight}"
end
看
而Rails将使用
part\u id:ids
自动执行中的where-IN
。您绝对不必手动构建where in(?)
部分。