Ruby on Rails チュートリアルをやってみた【第7章】

シェアする

第7章の実績

第7章 ユーザー登録 を実施しました!
実施時間: 4時間

学べたこと

  • デバッグ情報の埋め込み
    • ビルトインの”debug”メソッド
      例えば<%= debug(params) if Rails.env.development? %>をerbに記載すれば、”params”の情報を”開発環境でのみ”表示することができます。
    • byebug gemによる”debugger”メソッド
      Gemfileに”byebug”の依存関係の指定があれば、debuggerメソッドが使えるようになり、サーバー起動中に中断するブレイクポイントとなります。 Railsアプリケーションの中でよく分からない挙動があったら、トラブルが起こっていそうなコードの近くに差し込むのがコツです。
  • RESTfulなルーティング指定
    「resources :users」とroutes.rbに記載するだけで、以下のuserに対する、取得/新規作成/更新/削除といったRESTfulなルーティング指定を全てしてくれます。
HTTPリクエストURLアクション名前付きルート用途
GET/usersindexusers_pathすべてのユーザーを一覧するページ
GET/users/1showuser_path(user)特定のユーザーを表示するページ
GET/users/newnewnew_user_pathユーザーを新規作成するページ (ユーザー登録)
POST/userscreateusers_pathユーザーを作成するアクション
GET/users/1/editeditedit_user_path(user)id=1のユーザーを編集するページ
PATCH/users/1updateuser_path(user)ユーザーを更新するアクション
DELETE/users/1destroyuser_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という外部メソッドを使うのが慣習になっています。
private

  def user_params
    params.require(:user).permit(:name, :email, :password, :password_confirmation)
  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

リンク

【スポンサードリンク】

%d人のブロガーが「いいね」をつけました。