NoMethodError: []:Array 的未定义方法“错误”

阿福拉比·奥劳卢瓦·阿金乌米

当我运行test下面的代码时,我得到 NoMethodError

csv_importer.rb

require 'csv_importer/engine'

class WebImport
  def initialize(url)
    @url = url
  end

  def call
    url = 'http://example.com/people.csv'
    csv_string = open(url).read.force_encoding('UTF-8')

    string_to_users(csv_string)
  end

  def string_to_users(csv_string)
    counter = 0
    duplicate_counter = 0

    user = []
    CSV.parse(csv_string, headers: true, header_converters: :symbol) do |row|
      next unless row[:name].present? && row[:email_address].present?
      user = CsvImporter::User.create row.to_h
      if user.persisted?
        counter += 1
      else
        duplicate_counter += 1
      end
    end
    p "Email duplicate record: #{user.email_address} - #{user.errors.full_messages.join(',')}" if user.errors.any?

    p "Imported #{counter} users, #{duplicate_counter} duplicate rows ain't added in total"
  end
end

csv_importer_test.rb

require 'csv_importer/engine'
require 'test_helper'
require 'rake'

class CsvImporterTest < ActiveSupport::TestCase

  test 'truth' do
    assert_kind_of Module, CsvImporter
  end

  test 'should override_application and import data' do
    a = WebImport.new(url: 'http://example.com/people.csv')
    a.string_to_users('Olaoluwa Afolabi')# <-- I still get error even I put a comma separated list of attributes that is imported into the db here.
    assert_equal User.count, 7
  end
end

代码中 url 中的 .csv 格式:一旦我运行 Rake 任务,这将保存到数据库中

Name,Email Address,Telephone Number,Website
Coy Kunde,[email protected],0800 382630,mills.net

我为调试所做的工作:

我使用byebug并找出了 in csv_importer_test.rb,我所在的行a.string_to_users('Olaoluwa Afolabi')抛出错误。请参阅下面的错误错误:

再见错误

所以,当我运行时rails test,我收到以下错误:

测试错误

那么,我该如何解决这个错误,我不知道做错了什么??

马雷克·利普卡

如果您的 中没有任何行csv_string,则此行:

user = CsvImporter::User.create row.to_h

未执行,因此user变量保存以前的值,即[]

user = []

正如我们所知,没有errors为 定义方法Array,但您尝试在这一行中调用它:

p "Email duplicate record: #{user.email_address} - #{user.errors.full_messages.join(',')}" if user.errors.any?

这就是为什么你会得到一个错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

未定义的方法NoMethodError

NoMethodError未定义的方法

NoMethodError:未定义的方法

Ruby:获取未定义的方法错误NoMethodError

Rails 4错误:NoMethodError-未定义的方法“ itemfavorites”

为 nil:NilClass (NoMethodError) 获取错误未定义的方法“[]”

NoMethodError:未定义的方法`with_deleted`

rails NoMethodError:未定义的方法“酒店”

NoMethodError:HTTParty的未定义方法“提交”

NoMethodError(未定义的方法“已锁定”

Sidekiq:NoMethodError:未定义的方法“执行”

NoMethodError:未定义的方法“start_with?”

注入:NoMethodError:未定义的方法“ <<”::Symbol

ruby - NoMethodError:未定义的方法“状态”

NoMethodError:未定义的方法“创建”

NoMethodError:main:Object的未定义方法“ on”

NoMethodError:RSpec 的未定义方法“get”

NoMethodError:#<Model>的未定义方法“ pluck”

NoMethodError:nil:NilClass的未定义方法“ +”

nil:NilClass <NoMethodError>的未定义方法'[]'

NoMethodError:未定义的方法“ where”

测试NoMethodError:未定义的方法

NoMethodError: #<Class> 的未定义方法“类型”

致命:NoMethodError:[“ bundle”,“ install”]的未定义方法'each_char':Array您的意思是?each_cons

使用Ruby获取方法错误“ NoMethodError:nil:NilClass的未定义方法'each'”

mruby-require错误:NoMethodError:main的未定义方法“ puts”

Ruby open_uri错误NoMethodError:10:Fixnum的未定义方法“ strip”

Rails控制台错误:nil:NilClass的未定义方法“ each”(NoMethodError)

部署失败,并显示以下错误:#<NoMethodError:main:Object>的未定义方法“ on”