如何修复或初始化常量CsvImporter::Report



下面有以下代码,当我运行rake任务时,它会抛出错误NameError: uninitialized constant CsvImporter::Report

lib/user/csv_interorb.rb

# frozen_string_literal: true
require 'open-uri'
require 'csv'
class CsvImporter
Report < Struct.new(:users) do
def valid_count
@valid_count ||= users.count(&:persisted?)
end
def invalid_count
@invalid_count ||= total - valid_count
end
def total
@total ||= users.count
end
def errors
users.map do |user|
user.errors.full_messages.to_sentence
end.to_sentence
end
end
def initialize(file_path)
@file_path = file_path
end
def call
users = valid_rows.map do |row|
User.create(roles: [Role.find_or_create_by(name: row[:role])], email: row[:email])
end
Report.new(users)
end
private
attr_accessor :file_path
def valid_rows
CSV.foreach(file_path, headers: true, header_converters: :symbol).select do |row|
row[:email].present? && row[:password].present?
end
end
end

任务/user/csv_emporter.rake

# frozen_string_literal: true
require 'user/csv_importer'

namespace :user do
desc "Import data from CSV file into User's table"
task import_user: :environment do
file_path = (File.join Rails.root, 'doc', 'user', 'user.csv')
CsvImporter.new(file_path).call
end
end

您需要更改

Report < Struct.new(:users) do

Report = Struct.new(:users) do

最新更新