Ruby on Railes 第9章

第9章 ユーザーの更新・表示・削除

edit、update、index、destroyアクションを追加

9.1 ユーザーを更新する

ユーザーを編集するためのeditアクションを作成 PATCHリクエストに応答するupdateアクションを作成 ユーザー情報を更新できるのはそのユーザー自身に限られる

updating-usersトピックブランチを作成

9.1.1 編集フォーム

ユーザー編集ページの正しいURLが/users/1/edit ユーザーのidはparams[:id]変数で取り出すことができる ユーザー編集ページに対応するビュー 重複が多い、コードの繰り返しをパーシャルにまとめる

Gravatarへのリンクでtarget="_blank" リンク先を新しいタブ (またはウィンドウ) で開くようになる

https://rails-tutorial-apori.c9users.io/users/2/edit

form_for(@user)のコード 新規ユーザー用のPOSTリクエストとユーザー編集用のPATCHリクエストを区別するのでしょうか。 →Railsは、ユーザーが新規なのか、それともデータベースに存在する既存のユーザーであるかを、 Active Recordのnew_record?論理値メソッドを使用して区別できる form_for(@user)を使用してフォームを構成すると、 @user.new_record?がtrueのときには  POST falseのときには  PATCHを使用

ナビゲーションバーにあるユーザー設定へのリンク edit_user_pathという名前付きルート current_userというヘルパーメソッドを使う

9.1.2 編集の失敗

updateアクションの作成 update_attributes を使って送信されたparamsハッシュに基いてユーザーを更新 無効な情報が送信された場合、 更新の結果としてfalseが返され、elseに分岐して編集ページをレンダリング

update_attributesへの呼び出し Strong Parametersを使用してマスアサインメントの脆弱性を防止 Userモデルのバリデーションとエラーメッセージのパーシャルが既にあるので 、 無効な情報を送信すると役立つエラーメッセージが表示される

9.1.3 編集失敗時のテスト

統合テストを生成 rails generate integration_test users_edit

編集失敗時の簡単なテストを追加

Ruby on Railes 第8章

8.1.5 フラッシュのテスト

$ bundle exec rake test TEST=test/integration/users_login_test.rb
$ bundle exec rake test

8.2 ログイン

8.2.1 log_inメソッド

8.2.2 現在のユーザー

8.2.3 レイアウトリンクを変更する

8.2.4 レイアウトの変更をテストする

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

8.3 ログアウト

8.4 [このアカウント設定を保存する]

8.4.1 記憶トークンと暗号化

8.4.2 ログイン状態の保持

8.4.3 ユーザーを忘れる

8.4.4 2つの目立たないバグ

8.4.5 “Remember me” チェックボックス

8.4.6 Rememberのテスト

[remember me] ボックスをテストする 0も1もRubyの論理値ではtrue log_in_asというヘルパーメソッドを作成してテスト用にログインできるようにし

log_in_asではテストの種類を検出して、それに応じたログインを行えるようにする defined?メソッドを使用 引数の内容が定義されている場合はtrueを、その他の場合はfalseを返します post_via_redirectメソッド (リスト7.26) が統合テストの場合にのみアクセス可能 defined?(post_via_redirect) ... 統合テストの実行中にはtrueを返し、その他の場合にはfalseを返します

記憶ブランチをテストする

assert_equal <期待する値>, <実際の値>

bundle exec rake test TEST=test/helpers/sessions_helper_test.rb

8.5 最後に

変更をmasterブランチにマージ git add -A git commit -m "Finish log in/log out" git checkout master git merge log-in-log-out

リモートリポジトリとproductionサーバーにもプッシュ bundle exec rake test git push git push heroku heroku run rake db:migrate

本番サイトでは、変更を行う前に以下のようにメンテナンスモードをオンにしておく heroku maintenance:on git push heroku heroku run rake db:migrate heroku maintenance:off

8.5.1 本章のまとめ

Ruby on Railes 第6章

第6章ユーザーのモデルを作成する

6.1 Userモデル

6.1.1 データベースの移行

6.1.2 modelファイル

6.1.3 ユーザーオブジェクトを作成する

6.1.4 ユーザーオブジェクトを検索する

6.1.5 ユーザーオブジェクトを更新する

6.2 ユーザーを検証する

6.2.1 有効性のテスト

6.2.2 存在性を検証する

qiita.com

Ruby on Rails 第5章

5.1.2 BootstrapとカスタムCSS

5.1.3 パーシャル (partial)




5.2 SassとAsset Pipeline

5.2.1 Asset Pipeline

5.2.2 素晴らしい構文を備えたスタイルシート

5.3 レイアウトのリンク

5.3.1 Contactページ

5.3.3 名前付きルート

5.3.4 リンクのテスト

5.4 ユーザー登録: 最初のステップ

5.4.1 Usersコントローラ

5.4.2 ユーザー登録用URL

Ruby on Rails3

 

git remote add origin git@bitbucket.org:apori/sample_app.git 

git push -u origin --all 
heroku logs

3.2 静的ページ

静的なページ用のトピックブランチをチェックアウト  
git checkout master  
git checkout -b static-pages  

3.2.1 静的なページの生成

$ rails generate controller StaticPages home help
StaticPagesコントローラファイルをGitリポジトリに追加
$ git status
$ git add -A
$ git commit -m "Add a Static Pages controller"
$ git push -u origin static-pages

3.2.2 静的なページの調整

3.3 テストから始める

3.3.1 最初のテスト

テスト実行
bundle exec rake test

3.3.2 Red

3.3.3 Green

3.3.4 リファクタリング

3.4 少しだけ動的なページ

3.4.1 タイトルをテストする (Red)

3.4.3 レイアウトと埋め込みRuby (Refactor)

3.4.4 ルーティングの設定

3.7 高度なセットアップ

3.7.1 minitestレポーター

3.7.2 Backtrace silencer

3.7.3 Guardによるテストの自動化