質問: ruby 2.2.2p95 Rails 4.2.5 mac yosemite --- deviseでtwitterログインの機能を実装しております。 以下のページを参考にTwitter認証時はパスワードを要求しないようにpassword_required?というメソッドを作りました。 ただ、twitterの認証は成功するものの、いつもパスワードの入力欄が表示されており困っております。 binding.pryで確認したところtrueになっているのが原因かと思います。 ``` [1] pry(#)> super => true [8] pry(#)> super.class => TrueClass ``` しかし、このsuperが何をしているのかが、今の私の知識量ではわからず、 deviseのソースコードを読んでみたり、ググッてもわからなかったため質問させて頂きました。 宜しくお願いします。 ※twitter連携機能自体は実装されており、上手く連携されております。 連携時はパスワード欄を隠したいというところだけが上手く行ってません。
回答: Qiita の記事には下記のように記載があります。 > > Userのproviderがカラの場合のみPassword入力を要求する。 > > > よって、単にコードの転記ミスであり、実際は、逆ではないのでしょうか? ``` def password_required? provider.blank? && super end ``` 他の記事を見ても、super は後に来ているように思います。 validation - Rails3 devise / omniauth - password_required? and form_for :validate => true don't work together - Stack Overflow ``` def password_required? (authentications.empty? || !password.blank?) && super end ```