Rails认为我普通的种子数据是文件路径,并抛出“ Errno :: ENOENT:没有这样的文件或目录”

问题描述

我遇到一个奇怪的错误,即使不涉及文件路径,它也会引发“ Errno :: ENOENT:没有这样的文件或目录”。例如,如果我的种子数据显示:

users = Seller.create([{
    username: `Firstuser`
},{
    username: `Seconduser`,password: `123`
}

然后我尝试使用db:setup或db:seed,我将收到错误消息:

Errno :: ENOENT:没有这样的文件或目录-Firstuser

/Users/mycomputername/projectname-backend/db/seeds.rb:10:in``'

/Users/mycomputername/projectname-backend/db/seeds.rb:10:in''

/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `加载'

/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `加载'

/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/railties-6.0.3.3/lib/rails/engine.rb:557:in `load_seed中的块'

/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/railties-6.0.3.3/lib/rails/engine.rb:675:in `with_inline_jobs'

/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/railties-6.0.3.3/lib/rails/engine.rb:557:in `load_seed'

/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/activerecord-6.0.3.3/lib/active_record/tasks/database_tasks.rb:440:in `load_seed'

/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/activerecord-6.0.3.3/lib/active_record/railties/databases.rake:331:in `

中的块(2个级别)

/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/rake-13.0.1/exe/rake:27:in `'

/Users/mycomputername/.rvm/gems/ruby-2.6.1/bin/ruby_executable_hooks:24:in `eval'

/Users/mycomputername/.rvm/gems/ruby-2.6.1/bin/ruby_executable_hooks:24:in `'

仅因为我已经在先前涉及此错误的问题中看到了它的相关性,所以以下是我添加到gemfile中的gems:

gem "jwt"
gem "faker"
gem 'rails-erd',group: :development

解决方法

在Ruby中,'`做的事情非常不同。

单引号(')是string literals的定界符,例如:

users = Seller.create([
  { username: 'Firstuser' },{ username: 'Seconduser',password: '123'}
])

反引号(`)尝试在子shell中调用command并返回其输出,例如:(请参阅Kernel#`

`ruby --version`
#=> "ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin18]\n"

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...