[Rails] Tip xử lý khi import file

Note khi làm tính năng import file lên hệ thống để lưu data: Kiểm tra file phải đúng định dạng ở controller. VD: đuôi phải là csv, excel nếu không sẽ báo lỗi if params[:file].original_filename.split(".").last == Settings.export.format.csv status, message = ImportService.import_csv(params[:file]) else status, message = [false, "File khong phai csv"] end Tiếp đến Bắt lỗi

Note khi làm tính năng import file lên hệ thống để lưu data:

Kiểm tra file phải đúng định dạng ở controller. VD: đuôi phải là csv, excel nếu không sẽ báo lỗi

if params[:file].original_filename.split(".").last == Settings.export.format.csv
      status, message = ImportService.import_csv(params[:file])
    else
      status, message = [false, "File khong phai csv"]
end

Tiếp đến Bắt lỗi ở file import:

  • Kiểm tra có đọc được file theo định dạng mong muốn k? nếu k đúng định dạng thì báo lỗi luôn. VD: file encoding là gì?, có header …
      begin
        csv = CSV.read(file.path, headers: true, encoding: jis_encoding)
      rescue StandardError
        return [false, @i18n_message[:invalid_encode]]
      end
  • Nếu file có header : tên các cột thì cần kiểm tra có đủ cột hay k? tên cột có đúng k?
return [false, @i18n_message[:invalid_file]] if csv.headers != i18n_export[:label_name].values
  • Sau đến mới xử lý chạy từng row và lấy data, Kiểm tra validate. nếu validate lỗi thì gom nó vào 1 mảng lưu các dòng lỗi, nội dung lỗi.
    Hiển thị lỗi theo dòng:
"<li>Dong #{$INPUT_LINE_NUMBER}: #{errors.join('')}"

thay vì foreach từng row rồi tạo lưu luôn vào DB thì sẽ foreach từng row, khởi tạo object cho vào 1 mảng

Sau đó dùng gem “activerecord-import” để import 1 lần vào CSDL

Nguồn: viblo.asia

Bài viết liên quan

7 Cách Tăng Tốc Ứng Dụng React Hiệu Quả Mà Bạn Có Thể Làm Ngay

React là một thư viện JavaScript phổ biến trong việc xây dựng giao diện người d

Trung Quốc “thả quân bài tẩy”: hàng loạt robot hình người!

MỘT CUỘC CÁCH MẠNG ROBOT ĐANG HÌNH THÀNH Ở TRUNG QUỐC Thượng Hải, ngày 13/5 –

9 Mẹo lập trình Web “ẩn mình” giúp tiết kiệm hàng giờ đồng hồ

Hầu hết các lập trình viên (kể cả những người giỏi) đều tốn thời gian x

Can GPT-4o Generate Images? All You Need to Know about GPT-4o-image

OpenAI‘s GPT-4o, introduced on March 25, 2025, has revolutionized the way we create visual con