1

私は認証のために考案しましたが、validatable を使用していません。リクエストを送信し、それに沿ってタイプを送信します。例えば

http://localhost:3000/signup/new?type=twitter 

上記で使用type=twitterしたもので、Twitterの場合は電子メールを検証したくない、つまり必要ありませんがvalidates_presence_of :email、タイプ=電子メールを送信する場合は、メールの存在を確認し、メールがまだ取得されていないかどうかを確認したい指定されたメールは有効かどうか? これどうやってするの?私を助けてください。

4

2 に答える 2

2

以下をコントローラーに追加できます。

if params[:type] == 'twitter'
  user.save(:validate => false)

ただし、データベースに無効なデータが含まれるため、これを行うことはお勧めしません。実際に Twitter でログインするときに、ユーザーにメールアドレスを入力するように求めた方がよいでしょう。この課題全体は、 omniauth に関するこのエピソードで Ryan Bates が取り組んでいます。

編集: 少し調べてみましたが、devise のソース コードを確認すると、email_required というメソッドが追加されていることがわかります。.

したがって、そのメソッドをオーバーライドするだけです。ユーザーモデルはどのように見えますか? ユーザーが Twitter を使用してログインできるようにするにはどうすればよいですか? 質問を編集してそれを示していただければ、もう少しお役に立てるかもしれません。

于 2012-11-08T14:07:01.620 に答える
0

@Ashitaka が、何があってもユーザーのメールアドレスを尋ねるべきだと言っているのは良い点だと思います。

ただし、達成しようとしているものについては、独自のバリデータ クラスを作成します。これを実現する方法は、この Rails ガイド で確認できます。

于 2012-11-08T14:15:33.817 に答える