2014-01-17 61 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

謝謝你的解決方案。 –