【141日目】【1日20分のRailsチュートリアル】【第10章】演習の2.
今日は「10.5 演習」の2.から。
10.5 演習
2.現在は、/usersのユーザーインデックスページを開くとすべてのユーザーが表示され、/users/:idのようにIDを指定すると個別のユーザーを表示できます。
しかし考えてみれば、有効でないユーザーは表示する意味がありません。そこで、リスト10.58のテンプレートに記入して、この動作を変更してください。
なお、ここで使用するActive Recordのwhereメソッドについては、11.3.3でもう少し詳しく説明します。応用問題: /usersと/users/:id両方の統合テストを作成してください。
whereメソッドはよく分からないけど、SQLでSELECT文使うときのWHERE句みたいなものかな。。。また後で。
穴埋めするとこんな感じかなぁ。。。
app/controllers/users_controller.rb
def index @users = User.where(activated: true).paginate(page: params[:page]) end def show @user = User.find(params[:id]) redirect_to root_url and return unless @user.activated? end
応用問題: /usersと/users/:id両方の統合テストを作成してください。
なんて難しい。。。。
/usersについて統合テスト作成してみたけどこんなのでいいのだろうか。。。ファイルもこれでいいのかよく分かってない…。
とりあえずテストは通った。
まぁまずは自分で書いてみるのも勉強だよね。答え合わせはまたいつか。
test/integration/users_index_test.rb
def setup @admin = users(:michael) @non_admin = users(:archer) end : test "index as non-activated" do log_in_as(@admin) # 無効なユーザー @admin.toggle!(:activated) get users_path assert_template 'users/index' assert_select 'a', text: @admin.name, count: 0 @admin.toggle!(:activated) end
$ bundle exec rake test 47 tests, 215 assertions, 0 failures, 0 errors, 0 skips
今日の学習時間は【35分】。
次は「10.5 演習」の2.の/users/:idの統合テストを作成するところから。