2012-05-02 11 views
2

私はRuby on Railsアプリケーション(Ruby on Railsチュートリアルから)にtwitter認証を統合しようとしていました。Rake Aborted:引数が間違っている(0の場合は1)

その結果、私はテーブル(ユーザテーブル)を落として、それを再作成しなければなりませんでした。次のコマンドは動作し

namespace :db do 
    desc "Fill database with sample data" 
    task populate: :environment do 
    User.create!(name: "Example User", 
       email: "[email protected]", 
       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 

しかし$バンドルのexec熊手:デシベルの移入は動作しません。この問題に関するすべてのヘルプは高く評価され

$ 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 

は、私が取得していますエラーがあります。再度、感謝します!

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

アップデート05/02/2012:私はサードパーティのログイン情報(Facebook、twitter)を追加したいので、私はDeviseの宝石を追加しましたが、私はすべてをそれらをコメントアウトしたら、私は私のアプリ/モデル/ User.rbファイルに追加されたこれらの2行

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

をもたらしたことを走ったコマンドが細かい走りました。私はこれら二つの行が何をしているのか理解したいと思いますか?

答えて

3

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

間違って何には2つのヒントがありますすることと言うことは

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

と相まってcreate!

への呼び出しであるライン4上にあるかを示します検証は失敗しています。あなたが提供していないフィールドの存在を予期している検証がありますか? Userモデルのvalidates :some_field_name, :presence => true

+0

こんにちは@TCoppleが応答してくれてありがとう! My Usersテーブルには、ID、電子メール、created_at、updated_at、password_digest、remember_token、adminの各フィールドがあります。ユーザーモデルで コード: 'それは{respond_to必要があります(:名)} それは{respond_to必要があります(:Eメール)} それは{respond_to必要があります(:password_digest)} それは{respond_to必要があります(:パスワード)} それ{ respond_toべきである(:認証)} それは{respond_toべきである(:password_confirmation)(:remember_token)} それ{respond_toべきである(:管理者)} それは{respond_toべきである(:認証)を} それを{} それは{respond_toべきbe_valid} it {should_not be_admin} ' – Rubygirl

+0

2つのものがあります。 1)情報を追加する際に、元の投稿にコードを入れて、みんながそこにいることを知ってください。 2)実際のモデル自体ではなく、 'User'モデルのテストケースのように見えます。 'app/models/user.rb'の内容を投稿してください – TCopple

+0

こんにちはTCopple私は間違ったコードを貼り付けたことをご存知でした!私はDeviseを追加しましたが、どのコマンドラインを実行したのかわかりませんが、Userモデルには2行の追加行があります。元の投稿に貼り付けています。 – Rubygirl

2

それはUserクラス自体に何かすることができように見えます。可能性として検証中です。

そこにカスタム検証がありますか、他のカスタムコールバックがありますか?それをチェックする価値があるでしょう。

あなたはそれが問題であるかどうかを確認するために、独立して、コンソールでのrakeタスクのUser.create!を行うことができます。

+0

こんにちはShadwell ...私はウェブページ経由でユーザーを作成しようとしましたが、それは私に同じエラーを与えました。 – Rubygirl

2

を確認してください。同じ問題が発生していました。私はちょうど同じチュートリアルで終わり、過去3時間を私の髪を引き抜くのに費やしました。宝石のコードを通り抜けていくと、何が起きているのかがわかりました。何が起こっている

はこれです:

ch.6のではチュートリアルでは、ユーザーモデルに'has_secure_password'に追加するように求められます。 Deviseで使用しているモデルからこのヘルパーを外します。DeviseはGemのヘルパーを明示的に呼び出すわけではありませんが、コードは 'has_secure_password'のようなものです。

その後、サーバー、レールコンソールなどを殺してください。やり直して、人生はもう一度元気になるはずです。

関連する問題