簡體   English   中英

中止耙:參數數量錯誤(0代表1)

[英]Rake Aborted: Wrong number of arguments (0 for 1)

我試圖將Twitter身份驗證集成到我的Ruby on Rails應用程序中(來自Ruby on Rails教程)。

結果,我刪除了一個表(user table)並不得不重新創建它。 我現在想填充數據庫,並且具有用於填充表的代碼

namespace :db do
  desc "Fill database with sample data"
  task populate: :environment do
    User.create!(name: "Example User",
                 email: "example@railstutorial.org",
                 password: "foobar",
                 password_confirmation: "foobar")
    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
  end
end

以下命令起作用:

$bundle exec rake:db migrate
$bundle exec rake:db reset

但是$ bundle exec rake:db populate不起作用。

有我得到的錯誤:

    $ bundle exec rake db:populate --trace
    ** Invoke db:populate (first_time)
    ** Invoke environment (first_time)
    ** Execute environment
    ** Execute db:populate
    rake aborted!
    wrong number of arguments (0 for 1)
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/devise-2.0.4/lib/devise/models/database_auth
    enticatable.rb:105:in `password_digest'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/errors.rb
    :254:in `block in add_on_blank'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/errors.rb
    :253:in `each'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/errors.rb
    :253:in `add_on_blank'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validatio
    ns/presence.rb:9:in `validate'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb
    acks.rb:310:in `_callback_before_39'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb
    acks.rb:484:in `_run__584816360__validate__204154762__callbacks'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb
    acks.rb:405:in `__run_callback'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb
    acks.rb:385:in `_run_validate_callbacks'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb
    acks.rb:81:in `run_callbacks'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validatio
    ns.rb:212:in `run_validations!'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validatio
    ns/callbacks.rb:53:in `block in run_validations!'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb
    acks.rb:425:in `_run__584816360__validation__204154762__callbacks'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb
    acks.rb:405:in `__run_callback'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb
    acks.rb:385:in `_run_validation_callbacks'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb
    acks.rb:81:in `run_callbacks'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validatio
    ns/callbacks.rb:53:in `run_validations!'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validatio
    ns.rb:179:in `valid?'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/validat
    ions.rb:69:in `valid?'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/validat
    ions.rb:77:in `perform_validations'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/validat
    ions.rb:56:in `save!'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/attribu
    te_methods/dirty.rb:33:in `save!'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/transac
    tions.rb:246:in `block in save!'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/transac
    tions.rb:295:in `block in with_transaction_returning_status'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/connect
    ion_adapters/abstract/database_statements.rb:190:in `transaction'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/transac
    tions.rb:208:in `transaction'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/transac
    tions.rb:293:in `with_transaction_returning_status'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/transac
    tions.rb:246:in `save!'
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/validat
    ions.rb:41:in `create!'
    c:/tuffy/shopgodt/lib/tasks/sample_data.rake:4:in `block (2 levels) in <top (req
    uired)>'
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:205:in `call'
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:200:in `each'
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
    c:/Ruby193/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_lev
    el'
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:94:in `each'
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handlin
    g'
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handlin
    g'
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:63:in `run'
    c:/Ruby193/bin/rake:32:in `<main>'
    Tasks: TOP => db:populate

感謝您提供任何幫助。 再次感謝!

================================================== ==========

2012年5月2日更新:由於我想添加第三方登錄名(facebook,twitter),所以我添加了Devise gem,但是我不確定我運行的命令導致這兩行被添加到我的應用程序/模型中/User.rb文件

:token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
 devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

一旦我對它們進行評論,一切都很好。 我想了解這兩行在做什么?

有兩點提示出了什么問題

c:/tuffy/shopgodt/lib/tasks/sample_data.rake:4:in 'block (2 levels) in <top (required)>'

告訴您它在第4行上,這是create!調用create!

加上

c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validations/presence.rb:9:in 'validate'

說驗證失敗。 是否有驗證期望您不提供某些字段? 檢查您的User模型以validates :some_field_name, :presence => true

看起來可能是User類本身上的東西。 可能在驗證中。

您那里是否有任何自定義驗證或任何其他自定義回調? 值得檢查一下。

您可以執行User.create! 獨立於控制台中的rake任務來確認是否是問題所在。

好的-我遇到了同樣的問題。 我剛剛完成了相同的教程,並且花了過去3個小時來梳理頭發。 經歷了寶石的代碼,一切都使我意識到發生了什么。

這是怎么回事:

在第6章中,教程要求您將'has_secure_password'添加到用戶模型中。 從您與Devise一起使用的任何模型中刪除該幫助器。 盡管Devise並未在Gem中顯式地調用該幫助程序,但其代碼幾乎模仿了“ has_secure_password”的作用。

完成此操作后,請殺死服務器,Rails控制台等。重新開始,生活應該再快樂一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM