ぞえの技術めも

Ruby on Rails勉強中

【82日目】【1日20分のRailsチュートリアル】【第8章】ユーザー登録時にログインするようにする

Ruby on Railsチュートリアル(第3版)

今日は「8.2.5 ユーザー登録時にログイン」から。

8.2.5 ユーザー登録時にログイン

以上で認証システムが動作するようになりましたが、今のままでは、登録の終わったユーザーがデフォルトではログインしていないので、
(中略)
ユーザー登録中にログインを済ませておくことにします。

Webサービスの中でもユーザー新規作成時にログインしてくれるやつとしてくれないやつあるよね。
私も登録時にログインしてくれるやつの方がいいなぁ。

app/controllers/users_controller.rb

      :
    if @user.save
      log_in @user
      flash[:success] = "Welcome to the Sample App!"
      :

log_inメソッドを追加しただけ。

リスト8.22の動作をテストするために、リスト7.26のテストに1行追加して、ユーザーがログイン中かどうかをチェックします。
そのために、リスト8.15で定義したlogged_in?ヘルパーメソッドとは別に、is_logged_in?ヘルパーメソッドを定義しておくと便利です。

前追加したlogged_in?ヘルパーメソッドはテストから呼び出せないらしいのでテスト用にヘルパーメソッドを作成する。

test/test_helper.rb

  # テストユーザーがログインしていればtrueを返す
  def is_logged_in?
    !session[:user_id].nil?
  end

ヘルパーメソッドを使ってテストを追加。

test/integration/users_signup_test.rb

  test "valid signup information" do
    :
    assert is_logged_in?
  end

テスト実行して問題ないことを確認。

$ bundle exec rake test
24 tests, 55 assertions, 0 failures, 0 errors, 0 skips

機能的には一行追加するだけって簡単だなぁ。

今日の作業時間は【16分】

次は「8.3 ログアウト」から。