2013-08-08 2 views

답변

0

소화하는 동안 행을 필터링 할 수 있습니다.
나는 보통 CSV를 구문 분석하고 객체를 생성하고 저장합니다. 표준 유효성 검사를 사용하여 필터링 할 수 있습니다.

validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i 
0

당신은 열을 일치하는 정규식 표현을 사용할 수 있습니다

def import 
    require "csv" 
    if params[:csv_file].present? 
    CSV.parse(File.open(params[:csv_file].tempfile){|f| f.read}, headers: true, header_converters: :symbol) do |row| 
     obj = MyObject.new(row) 
     obj.save # validation filter rows 
    end 
    end 
end 

및 모델에서 내 컨트롤러가 csv_file 매개 변수를 import 작용을하고 기대하는 경우처럼

는 컨트롤러 액션 보인다 행을 처리하기 전에 콘텐츠 : 예 :

CSV.foreach(path_to_file, :headers => true) do |row| 
    if /\A[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]+\z/.match(row['email']) 
    #process the row (e.g. insert into database) 
    end 
end