[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

Cấu hình Prisma v7 Với Nest.js Mới nhất

Setup Prisma v7 trong Nest.js Bài viết dành cho ai mới học Nest.js và chọn prisma làm OR

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 2

viết lại nội dung này ” Phát hiện các cuộc tấn công Cross Site Scripting (XSS)

AI Chatbot 2025: Xu Hướng Tất Yếu Cho Doanh Nghiệp Dẫn Đầu

Giới thiệu AI chatbots đã trải qua một hành trình đáng kể, từ những công cụ t

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 1

Tấn công web là gì? Ứng dụng web là các ứng dụng cung cấp dịch vụ cho người