Ruby on rails 如何使用ActiveStorage从CSV导入图像并附加到模型?

Ruby on rails 如何使用ActiveStorage从CSV导入图像并附加到模型?,ruby-on-rails,csv,rake-task,rails-activestorage,Ruby On Rails,Csv,Rake Task,Rails Activestorage,我正在尝试从CSV导入用户头像,并使用ActiveStorage连接到用户 我已经为此创建了一个rake任务,但它不起作用,并且不会抛出任何错误。在我的CSV中只有两个字段:email和avatar avatar是文件的url,该文件位于另一台服务器上 这就是任务: require 'csv' namespace :import do desc "Import avatars to users from CSV" task avatars: :environment do fil

我正在尝试从CSV导入用户头像,并使用ActiveStorage连接到用户

我已经为此创建了一个rake任务,但它不起作用,并且不会抛出任何错误。在我的CSV中只有两个字段:email和avatar avatar是文件的url,该文件位于另一台服务器上

这就是任务:

require 'csv'
namespace :import do
  desc "Import avatars to users from CSV"
  task avatars: :environment do
    filename = File.join Rails.root, "avatars.csv"

    CSV.foreach(filename, headers: true, col_sep: ";", header_converters: :symbol) do |row|
      User.find_by(email: row[:email]) do |u|
        u.avatar.attach(URI.parse(row[:avatar]).open)
      end
    end
  end
end
有什么建议吗?
谢谢您的帮助。

您是否尝试捕获任何异常并在控制台中打印问题

诸如此类:

需要“csv” 名称空间:导入do desc从CSV向用户导入化身 任务化身::环境做什么 开始 filename=File.join Rails.root,avatars.csv CSV.foreachfilename,标题:true,col_sep:;,标题|转换器::符号do |行| User.find_byemail:row[:email]do | u| u、 avatar.attachURI.parserow[:avatar].打开 终止 终止 营救标准错误=>e logger=logger.newstout logger.error e.消息 logger.error e.backtrace.join\n 终止 终止 终止
另外,您确定有用户使用该电子邮件吗?

您是否尝试捕获任何异常并在控制台中打印问题

诸如此类:

需要“csv” 名称空间:导入do desc从CSV向用户导入化身 任务化身::环境做什么 开始 filename=File.join Rails.root,avatars.csv CSV.foreachfilename,标题:true,col_sep:;,标题|转换器::符号do |行| User.find_byemail:row[:email]do | u| u、 avatar.attachURI.parserow[:avatar].打开 终止 终止 营救标准错误=>e logger=logger.newstout logger.error e.消息 logger.error e.backtrace.join\n 终止 终止 终止
另外,您确定您有该电子邮件的用户吗?

Hi@mariotux。您提供的代码没有错误,是的,有用户使用这些电子邮件。我开始认为这可能是一个设计验证?我忘了提到我使用Desive进行身份验证。。。谢谢你的回答。我从控制台得到这个,但没有错误:“irbmain:003:0>Rake::Task['import:avatars']。调用用户加载15.1ms选择用户。*来自用户所在的用户。email=$1限制$2[[email,email1@email.com],[LIMIT,1]]用户加载0.6ms选择用户。*来自用户,其中users.email=$1 LIMIT$2[[email,email2@email.com], [限制,1]=>[]’。为了隐私,我编辑了路径和电子邮件。您好@mariotux。您提供的代码没有错误,是的,有用户使用了这些电子邮件。我开始认为这可能是一个设计验证?我忘了提到我使用设计进行身份验证…感谢您的回答。我从控制台获得此信息,但没有错误:'irbmain:003:0>Rake::Tas'k['import:avatars'].调用用户加载15.1ms选择用户。*从用户那里,users.email=$1限制$2[[email,email1@email.com],[LIMIT,1]]用户加载0.6ms选择用户。*来自用户,其中users.email=$1 LIMIT$2[[email,email2@email.com],[LIMIT,1]]=>[]”。为了隐私,我编辑了路径和电子邮件。