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

Ruby on Rails チュートリアルをやってみた【第7章】
カテゴリ
技術
タグ
ruby
ruby on rails

第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という外部メソッドを使うのが慣習になっています。
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
https://github.com/nisioka/RubyOnRailsTutorial/tree/static-pages

リンク

【スポンサードリンク】


関連記事

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

    第14章の実績 第14章 ユーザーをフォローする を実施しました!実施時間: 5時間 学べたこと 多対多のリレーションシップ多対多の関係を持つモデルの場合でもRailsでは簡単にリレーションシップを表現することができます […]

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

    第13章の実績 第13章 ユーザーのマイクロポスト を実施しました!実施時間: 4.5時間 学べたこと モデルの関連付け「rails generate model Micropost content:text user: […]

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

    第12章の実績 第12章 パスワードの再設定 を実施しました!実施時間: 1.5時間 学べたこと 本章では特段新しいことはなかったです。 第11章 アカウントの有効化 と同じような内容で、復習に近いような内容でした。ただ […]

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

    第11章の実績 第11章 アカウントの有効化 を実施しました!実施時間: 1.5時間 学べたこと メール送信機能「rails generate mailer UserMailer account_activation p […]

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

    第10章の実績 第10章 ユーザーの更新・表示・削除 を実施しました!実施時間: 2時間 学べたこと before_action例えば本章では、「before_action :logged_in_user, only: […]

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

    第9章の実績 第9章 発展的なログイン機構 を実施しました!実施時間: 1.5時間 学べたこと cookies.permanent.signed[:user_id] = user.id上記コードは、「cookieに、永続 […]