Ruby on Rails 3.0.7アプリケーションとdevise
を使用したユーザー認証がありますが、代替のsign up
とsign in
メソッド、ユーザーがFacebook
アカウントを使用してサインアップできるようにし、そのログイン情報を、デバイスがユーザーの登録とログインに使用するのと同じusers
テーブルに保存します。
ステップ
Koala
から抽出した名前と電子メール)を保存します。ユーザーに一般的なパスワードを与えます。current_user
ヘルパーとuser_signed_in?
ヘルパーも使い続けたいので、3番目のステップがありません。
では、他のコントローラーからこのユーザーに自動的にサインインするようにdeviseに指示するにはどうすればよいですか?
この質問でそのようなものを見ました デバイス:複数のコントローラーにユーザーセッションを処理させる そしてそれは私のユーザーをログインさせますが、空白のページに私を導きます...
Deviseは ヘルパーの束 を提供します。そのうちの2つは次のとおりです。
sign_in(resource_or_scope, *args)
sign_in_and_redirect(resource_or_scope, *args)
これらはどのコントローラーからでも使用できます。
[〜#〜]編集[〜#〜]
sign_in
の使用はすでに機能しているが、ユーザーが空白のページのままになっている場合は、ログファイルをチェックして、リダイレクトが行われているかどうか、およびリダイレクト先を確認してください。または、上記の2番目のヘルパーを使用してリダイレクトを明示的にします。
コントローラーにDeviseヘルパーを含め、通常のすべてのdeviseメソッドを含めます。 sign_in
またはsign_out
は自動的にそこで利用可能になります。
class TestController < RocketPants::Base
include Devise::Controllers::Helpers
幸い、コントローラーがApplicationController
を拡張する場合、Deviseはこれらのヘルパーを便利なメソッドとして自動的に含めます。
ただし、RockePants
リポジトリは、コントローラーがApplicationController
を拡張しない特定のケースを説明しているため、この明示的なinclude Devise::Controllers::Helpers
が必要です https://github.com/filtersquad/rocket_pants/issues/7
また、公式のDeviseドキュメントは、ヘルパーを含めることで使用できる他のメソッドを見つけるのに役立ちます http://rubydoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers