6

このチュートリアルに従って、devise を使用して Rails アプリで認証を設定しました。ユーザーは登録してから、電子メールとパスワードを使用してログインできます。

Twitterを使用して登録/ログインする機能を追加したいと思います。私はdevise wikiのガイドに従っています

wiki の例では facebook を使用していますが、私は twitter を使用するように変更しました。なんとか Twitter にアクセスして承認をリクエストできたので、基本的な機能は確実に動作しています。ただし、アプリに戻ると、次のエラーが発生します。

Validation failed: Email can't be blank

メールアドレスを教えていないことが原因だと思います。

私が使用しているコードは、(facebook を twitter に交換することを除いて) チュートリアルのコードと同じであるため、サンプルを投稿していません。見たいものがあれば教えてください。

私はレールにかなり慣れていないので、デバッグ方法がわかりません。どのように続けるべきかアドバイスはありますか?

4

2 に答える 2

3

私はこの質問が古いことを知っていますが、まだ出てきており、簡単なグーグル検索でいくつかの非常に悪いアドバイスが見つかりました. だからここ...

電子メールをオプションにする正しい方法は、ユーザー モデルから検証可能なインターフェイスを削除することではなく、代わりにこれを追加することです。

def email_required?
  false
end 

これは、'validatable' クラスのメソッドをオーバーライドし、email がオプション フィールドであることをコードに通知しますが、validatable に含まれるすべての優れた機能を保持します。そういうもの。残しておきたいもの。

もちろん、本当に変わったものが必要な場合は、検証可能なインターフェースのソースコードを見て、関連する検証をコピーして必要に応じて調整する必要がありますが、99.99% の人にとって、上記のコードはおそらく足りる。

疲れたグーグルユーザーに役立つことを願っています。

于 2015-11-19T15:46:02.307 に答える
3

ユーザーモデルから「:validatable」を削除するだけで、空のメールが許可されます。うまくいきました!!

于 2012-06-14T21:22:47.683 に答える