カロリーメイトください

Barbaroi Ware(バルバロイ・ウェア)という名前でアプリ開発してます

『Ruby on Rails チュートリアル』「第10章ユーザーの更新・表示・削除」5

railstutorial.jp

序文

Railsチュートリアル24日目。

最近、引きこもりまくってていかんですね。
今週末は久しぶりにRailsの勉強会(もくもく会)に出てきます。
techdrive.connpass.com

来年、無謀にも自分で主催しようかなぁという計画もあったんですがどうなることやら。

進捗

  • 第10章ユーザーの更新・表示・削除
    • 10.3 すべてのユーザーを表示する
    • 10.4 ユーザーを削除する

コード実装部分(一部)

/sample_app/test/controllers/users_controller_test.rb

require 'test_helper'

class UsersControllerTest < ActionDispatch::IntegrationTest
  # @userにfixturesで定義したテスト用データを設定する
  def setup
    @user = users(:michael)
    @other_user = users(:archer)
  end

(中略)  
  
  # admin属性は変更できないことを確認する
  test "should not allow the admin attribute to be edited via the web" do
    # 管理者でないユーザーでログインする
    log_in_as(@other_user)
    # 管理者権限はないか
    assert_not @other_user.admin?
    # PATCHで管理者権限を与えようとする
    patch user_path(@other_user), params: {
                                  user: { password:              "password",
                                          password_confirmation: "password",
                                          admin: true } }
    # 管理者権限がちゃんと制限されているか
    assert_not @other_user.reload.admin?
  end
end

GitHub

github.com

実行結果

f:id:yjkym:20181213153604p:plain

感想

Railsチュートリアル10章5日目。

今日はユーザーデータの削除機能の実装。

管理権限をカラムに追加して、管理者権限を持っているユーザーだけが他のユーザーデータを削除できるように実装していく。

いまだ10章終わらず。
今日は演習で大きくつまずいた。

Strong Parametersを使用して、管理者権限を変更できないように実装していったのだが、管理者権限を編集できるようにしてみても問題なく↑のテストが通ってしまう問題が発生。

結構詰まってしまったのだが、結論から言うと

assert_not @other_user.reload.admin?

とすべきところを

assert_not @other_user.admin?

としていた。

そりゃ通らねーわなーと思いつつも、結構やりがちなミスのような気がするね。
明日こそはなんとか10章終わらそう。

カロリーメイトください。

今日のunityroom

YES! YOU ARE THE SANTA | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
www.youtube.com
俺、普通に諦めるから。笑