2014-01-17 62 views
0

我有我认为可能不是一个非常独特的问题。CSV - 列值的唯一组合

我有一个应用程序,用户可以上传CSV。我想根据CSV中三个字段的值验证该CSV与数据库中已存在的数据。

想象我有5列的CSV:1东西,东西2,东西3,4的东西,东西5

我需要找到所有存在的东西1,东西3独特的组合,和Stuff 4在CSV中,这样我就可以对数据库运行查询来查看是否有已经存在的组合的记录。

有关我如何完成此操作的任何想法?

这是我的CSV对象。

CSV::HeaderConverters[:mystrip] = lambda{|s| s.strip} 
@csv = CSV.readlines(@import_file.path, header_converters: [:mystrip] , headers: true) 

回答

0
combinations = @csv.map {|row| [row[0], row[2], row[3]]}.uniq 

combinations.each do |values| 
    if Model.where(value_1: values[0], value_2: values[1], value_3: values[2]).exists? 
    # Stuff 
    end 
end 
+0

要添加到这一点,我如何使用这些这将是一个数组的数组与AR查询结果。我需要做一些像Model.where(“value_1(?)&value_2(?)”row [0],row [2],row [3])。 –

+0

增加了一个ActiveRecord查询的例子。 – davogones

+0

谢谢你的解决方案。 –