2017-07-06 24 views
0

API専用のRailsアプリの認証を設定するのにdevise_token_authを使用しています。devise_token_auth:RegistrationsController中の引数の数が間違っています(0、予想1)。

http POST :3000/auth '[email protected]' 'password=password' 'password_confirmation=password'

応答がエラーページの完全なHTMLが出力され、誤差の範囲内wrong number of arguments (given 0, expected 1)がある:私は、次のコマンドを使用して、コマンドラインで使用して登録を作成httpieをテストしています。違反行為はDeviseTokenAuth::RegistrationsController#createです。

ご指摘いただきありがとうございます。コードはここにある:https://github.com/jraczak/flow-api

工夫がUserモデルに適用されます。here

Routesは解答とのチャットの議論をまとめると、ここ

+0

エラートレースを投稿できますか... –

+0

@VamsiKrishna可能ですが、HTMLダンプなので少し不自由です。私はここに要点を追加しました:https://gist.github.com/jraczak/d8aab28bf0a670c1f6c8a49bf0dadf45 – justinraczak

+0

deviseが適用されているルートとモデルを投稿できますか? –

答えて

0

です...

だけhttps://github.com/jraczak/flow-api/blob/master/app/models/user.rbhas_secure_passwordを削除し、:password_digestvalidates_presence_of :name, :email, :password_digestから...デビーズは既にそれを行います

私も削除した後に間違っている可能性がありますあなたはあなたのスキーマ(https://github.com/jraczak/flow-api/blob/master/db/schema.rb)ですでに追加encrypted_pa​​ssword列...その場合には、テーブルからpassword_digest列を削除...それは

rails g migration RemovePwdDigest 

class RemovePwdDigest < ActiveRecord::Migration 
    def change 
    remove_column :users, :password_digest 
    end 
end 

をうまくいくことを確認has_secure_passwordと検証:

https://github.com/plataformatec/devise/blob/ee01bac8b0b828b3da0d79c46115ba65c433d6c8/lib/devise/models/database_authenticatable.rb#L45

あなたは、この行が表示された場合は、新しいパスワードまたはどこでもパスワード=メソッドを使用して設定しながら、それが内部password_digestメソッドです呼び出そうとする工夫。しかし、すでにメソッド(password_digestカラム)に似た名前のdbカラムがあるので、内部メソッドを考案するのではなく、そのカラムを呼び出すことになります。だから、あなたは間違いに直面している。

+0

自分自身とこれに遭遇する他の誰のためにも、フィールドが筆者によって使用されていない場合、なぜこの影響があったのかを分かち合うことができますか? 'password_digest'は私が別の認証方法を採用しようとしていたときから残されていました。 – justinraczak

+0

@justinraczakが答えを更新しました... –

関連する問題