Ruby on rails 使用rails从CSV导入特定行和列

Ruby on rails 使用rails从CSV导入特定行和列,ruby-on-rails,csv,import,Ruby On Rails,Csv,Import,首先,是否有一种方法可以在行中只抓取某些列 其次,我使用if语句是否是获取特定行的最佳方法? 我是否可以将整个CSV加载到某种排序的暂存表中,然后获取我需要的内容?行。to_hash将根据标题生成属性哈希。要选择一组特定的属性,应该使用slice require 'csv' CSV.foreach(filename, :headers => true) do |row| if column3 = true || column 4 = true Model.create

首先,是否有一种方法可以在
行中只抓取某些列

其次,我使用
if
语句是否是获取特定行的最佳方法?
我是否可以将整个CSV加载到某种排序的暂存表中,然后获取我需要的内容?

行。to_hash
将根据标题生成属性哈希。要选择一组特定的属性,应该使用slice

require 'csv'    

CSV.foreach(filename, :headers => true) do |row|
  if column3 = true || column 4 = true
    Model.create!(row.to_hash)
  else
    skip
  end
end
关于您的第二个问题:是的,您仍然需要加载整个csv,只需检查每一行

>> row.to_hash # { :attr1 => 'val1', :attr2 => 'val2', :attr3 => 'val3' }
>> row.to_hash.slice(:attr1, :attr2) # { :attr1 => 'val1', :attr2 => 'val2' }