【问题标题】:wrong number of arguments (1 for 0) Hartl chapter 10...bundle exec rake db:populate参数数量错误(1 代表 0) Hartl 第 10 章 ...bundle exec rake db:populate
【发布时间】:2014-05-20 01:21:10
【问题描述】:

我是 Rails 新手,现在正在学习 Hartl Tutotial。我在使用

填充数据库时遇到了错误
bundle exec rake db:populate 

这是我的 sample_date.rake

namespace :db do
desc "Fill database with sample data"
task populate: :environment do
admin = User.create!(name: "Example User",
                     email: "example@railstutorial.org",
                     password: "foobar",
                     password_confirmation: "foobar",
                     admin: true)

99.times do |n|
  name  = Faker::Name.name
  email = "example-#{n+1}@railstutorial.org"
  password  = "password"
  User.create!(name: name,
               email: email,
               password: password,
               password_confirmation: password)
end
users = User.all(limit: 6)
50.times do
  content = Faker::Lorem.sentence(5)
  users.each { |user| user.microposts.create!(content: content) }
end
end
end

错误是指参数“Users.all”的第 24 行,但这里的问题是什么??我检查了我所有的 rb 文件,但它们与教程标签匹配。

$ bundle exec rake db:populate --trace
** Invoke db:populate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:populate
rake aborted!
ArgumentError: wrong number of arguments (1 for 0)
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.1.1/lib /active_record/scoping/named.rb:24:in `all'
C:/Users/Christian/Documents/Aptana Studio 3 Workspace/Tutorial3/lib/tasks/sample_data.rake:19:in `block (2 levels) in
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/task.rb:240:in `call'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/task.rb:240:in `block in execute'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/task.rb:235:in `each'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/task.rb:235:in `execute'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/task.rb:179:in `block in invoke_with_call_cha
c:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/task.rb:165:in `invoke'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/application.rb:150:in `invoke_task'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/application.rb:106:in `block (2 levels) in to
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/application.rb:106:in `each'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/application.rb:106:in `block in top_level'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/application.rb:115:in `run_with_threads'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/application.rb:100:in `top_level'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/application.rb:78:in `block in run'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/application.rb:176:in `standard_exception_han
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/lib/rake/application.rb:75:in `run'
c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-10.3.2/bin/rake:33:in `<top (required)>'
c:/RailsInstaller/Ruby1.9.3/bin/rake:23:in `load'
c:/RailsInstaller/Ruby1.9.3/bin/rake:23:in `<main>'
Tasks: TOP => db:populate

这是我的宝石文件:

来源'https://rubygems.org'

gem 'rails', '4.1.1'
gem "twitter-bootstrap-rails"
gem "bootstrap-sass", '~> 3.1.1.1'
gem 'sprockets', '~> 2.11.0'
gem 'bcrypt-ruby', '3.1.2'
gem 'faker', '1.1.2'
gem 'will_paginate', '3.0.5'
gem 'bootstrap-will_paginate', '0.0.10'
group :development, :test do
gem 'sqlite3'
gem 'rspec-rails', '2.14.2'
end
group :assets do 
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
end
gem 'jquery-rails'
group :test do
  gem 'capybara', '2.2.1'
end
group :production do
  gem 'rails_12factor'
end
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'tzinfo-data', platforms: [:mingw, :mswin]

非常感谢您的帮助...我被困在这里了!

【问题讨论】:

  • 很抱歉给您带来不便,但值得注意的是,这里的错误不在教程中。根据您的 Gemfile,您使用的是 Rails 4.1,而本书使用的是 Rails 4.0,并明确表示“除非另有说明,否则您应该使用教程中使用的所有软件的确切版本,包括 Rails 本身,如果您想要相同的版本结果。”我目前正在编写使用 Rails 4.1 的第 3 版,但目前该教程仅适用于 Rails 4.0。

标签: ruby-on-rails railstutorial.org


【解决方案1】:

使用

users = User.all.limit(6)

或者只是

users = User.limit(6)

'all' 方法不带参数。 http://apidock.com/rails/ActiveRecord/Scoping/Named/ClassMethods/all

【讨论】:

  • 冰人...非常感谢,您的解决方案完美运行!你真的把我从紧张的崩溃中救了出来;-)
  • 我也是 stackoverflow 的新手。我现在刚刚点击了绿色的钩子,希望这就是你所说的“标记为已解决”。
猜你喜欢
  • 2012-05-28
  • 1970-01-01
  • 2015-01-25
  • 2016-06-03
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多