1

私は Omniauth-Identity を実装しており、Ryan Bates による Railcast がそれを実行しているのを見てきました。彼は、ログイン ビューを調べているときに、ログイン フィールドはデフォルトで電子メールに設定されていますが、カスタマイズできることを率直に述べています。「ログイン」列の下の ID テーブルに保存されているユーザー名でサインインしようとすると、MySql エラーが発生します

 Unknown column 'identities.email

上記のように、Identity はデフォルトでこの auth_key に設定されるため、これは予期されることです。宝石のソースコードには、この定義があります

 def auth_key(method = false)
      @auth_key = method.to_s unless method == false
      @auth_key = nil if @auth_key == ''

      @auth_key || 'email'
    end

したがって、どこかで auth_key(login) を呼び出すことができるはずであり、データベースの正しい列を照会すると想定しています。私の質問はどこですか。「email」を「login」に置き換えてモデルのメソッドを上書きしようとしましたが、何もしませんでした。

Ryan Bates と同じように、セッション/新しいビューから /auth/identity/callback を呼び出しています。どうもありがとうございました。明らかな場合は申し訳ありませんが、インターネットで見つけたのはRailscastsチュートリアルの逆流だけだったようです。

4

1 に答える 1

0

元々、auth_key を再定義して gem コードをオーバーライドしようとしていました...

 auth_key("login")

私のidentity.rbでは、質問を投稿した直後にそれを行ったので、うまくいかなかったと思います。いずれにせよ、それが他の人に役立つことを願っています。

于 2012-07-16T22:16:49.010 に答える