読者です 読者をやめる 読者になる 読者になる

ぞえの技術めも

Ruby on Rails勉強中

【105日目】【1日20分のRailsチュートリアル】【第9章】すべてのユーザーを表示する

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

今日は「9.3 すべてのユーザーを表示する」から。

9.3 すべてのユーザーを表示する

この節では、いよいよ最後から2番目のユーザーアクションであるindexアクションを追加しましょう。このアクションは、すべてのユーザーを一覧表示します。

すべてのユーザーはどのアカウントからも見れるアプリケーションなんだっけ。Twitterみたいなやつ作るんだよね、確か。

9.3.1 ユーザーインデックス

ユーザーのshowページについては、今後も (ログインしているかどうかに関わらず) サイトを訪れたすべてのユーザーから見えるようにしておきますが、
ユーザーのindexページはログインしたユーザーにしか見せないようにし、未登録のユーザーがデフォルトで表示できるページを制限します。

ほぅほぅ。

indexページを不正なアクセスから守るために、まずはindexアクションが正しくリダイレクトするか検証するテストを書いてみます (リスト9.31)。

indexアクションに関するテストを追加。

test/controllers/users_controller_test.rb

  test "should redirect index when not logged in" do
    get :index
    assert_redirected_to login_url
  end

次に、beforeフィルターのlogged_in_userにindexアクションを追加して、このアクションを保護します (リスト9.32)。

Userコントローラーにindexアクションを追加して、brforeフィルターにもindexアクションを追加。

app/controllers/users_controller.rb

class UsersController < ApplicationController
  before_action :logged_in_user, only: [:index, :edit, :update]
  :
  def index
  end
  :

ここでテスト実行すると通りました。
idenxアクションのリダイレクト処理書いてないのにー、と一瞬思ったけど、
logged_in_userでリダイレクト処理入れてましたね…。そういうことか。

$ bundle exec rake test
36 tests, 85 assertions, 0 failures, 0 errors, 0 skips

途中だけど今日はここまで。

今日の学習時間は【16分】

次は「9.3.1 ユーザーインデックス」のindexビューを追加するところから。