第7章の実績
第7章 ユーザー登録 を実施しました!
実施時間: 4時間
学べたこと
- デバッグ情報の埋め込み
- ビルトインの”debug”メソッド
例えば<%= debug(params) if Rails.env.development? %>をerbに記載すれば、”params”の情報を”開発環境でのみ”表示することができます。 - byebug gemによる”debugger”メソッド
Gemfileに”byebug”の依存関係の指定があれば、debuggerメソッドが使えるようになり、サーバー起動中に中断するブレイクポイントとなります。 Railsアプリケーションの中でよく分からない挙動があったら、トラブルが起こっていそうなコードの近くに差し込むのがコツです。
- ビルトインの”debug”メソッド
- RESTfulなルーティング指定
「resources :users」とroutes.rbに記載するだけで、以下のuserに対する、取得/新規作成/更新/削除といったRESTfulなルーティング指定を全てしてくれます。
HTTPリクエスト | URL | アクション | 名前付きルート | 用途 |
GET | /users | index | users_path | すべてのユーザーを一覧するページ |
GET | /users/1 | show | user_path(user) | 特定のユーザーを表示するページ |
GET | /users/new | new | new_user_path | ユーザーを新規作成するページ (ユーザー登録) |
POST | /users | create | users_path | ユーザーを作成するアクション |
GET | /users/1/edit | edit | edit_user_path(user) | id=1 のユーザーを編集するページ |
PATCH | /users/1 | update | user_path(user) | ユーザーを更新するアクション |
DELETE | /users/1 | destroy | user_path(user) | ユーザーを削除するアクション |
- form_forヘルパーメソッド
<%= form_for(@user, url: signup_path) do |f| %>とerbに記載すると、Active Recordのオブジェクト(ここでは@user)を取り込み、そのオブジェクトの属性を使ってフォームを構築します。 - Strong Parameters
以下のように定義することで、paramsに、”:user”を必須とし、”:name”、”:email”、”:password”、”password_confirmation”のみ入力を許可するという制約を設けることができます。
以前のバージョンのRailsでは、モデル層でattr_accessibleメソッドを使うことでマスアサインメント脆弱性を防止していましたが、Rails 4.0以降ではコントローラ層でこのStrong Parametersというテクニックを使うことが推奨されているそうです。また、 これらのパラメータを使いやすくするために、user_params
という外部メソッドを使うのが慣習になっています。
1private
2
3 def user_params
4 params.require(:user).permit(:name, :email, :password, :password_confirmation)
5 end
- redirect_to @user = redirect_to user_url(@user)
独自にやったこと
デプロイ時にdb:migrateが自動で流れるよう設定
本番環境へのデプロイ時、毎度手動でdb:migrateを流すのが面倒だったので、HerokuのRelease Phaseという機能を用いて、「rails db:migrate 」を自動で流れるように設定しました。下記のようにProcfileに「release:」から始まる一行を追加するだけです。
参考
環境
- ruby: 2.3.3
- ruby on rails: 5.1.4
- OS: Windows 10 (64bit)
- IDE: IntelliJ ULTIMATE 2018.1
- リポジトリ:GitHub
リンク
【スポンサードリンク】

