0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【学習】Ruby on Rails チュートリアル 第7版 - 第7章 ユーザー登録

Last updated at Posted at 2023-05-20

5/20 15:15 開始

REST(REpresentational State Transfer):
アプリケーションを構成するコンポーネントを「リソース」としてモデル化することを指す。
これらのリソースは、リレーショナルデータベースの作成/取得/更新/削除(Create/Read/Update/Delete: CRUD)操作と、
4つの基本的なHTTP requestメソッド(POST/GET/PATCH/DELETE)の両方に対応している。

*debuggerメソッド
アプリケーションのdebuggerが呼び出された瞬間の状態を確認できる。

例えば...
↓にdebuggerメソッドを差し込むと

class UsersController < ApplicationController

  def show
    @user = User.find(params[:id])
    debugger
  end
    .
    .
    .
end

Railsサーバーを立ち上げたターミナルに
rdbg(Ruby debugger)プロンプトが表示され、色々確認できる。

(rdbg) @user.name
"xxxx"
(rdbg) @user.email
"xxxx"
(rdbg) params[:id]
"1"

Ctrl-Dを押し、debuggerの行を削除することで
アプリケーションの実行を続行できる。

7.1.3まで終了

16:15 終了

16:45 開始

*form_with
Active Recordのオブジェクトを取り込み、そのオブジェクトの属性を使ってフォームを構築する。

(使用例)
<%= form_with(model: @xxx) do |f| %>
.
.
.
<% end %>

fオブジェクトは、HTMLフォーム要素(テキストフィールド、ラジオボタン、パスワードフィールドなど)に対応するメソッドが呼び出されると、@xxxの属性を設定するために特別に設計されたHTMLを返す。

<%= f.label :name %>
<%= f.text_field :name %>

 ↓のHTMLを返す

Name

<%= f.label :password %>
<%= f.password_field :password %>

↓を返す

Password

※パスワードフィールド(type="password")は文字がドットに置き換わって表示される。

↓のHTMLも生成される。

※formタグ:入力・送信フォームを作成する時に使うタグ

action="/users" method="post"
→/usersに対してHTTPのPOSTリクエストを送信する

/routesで確認してみると、↑の/usersへのPOSTリクエストはcreateアクションに送られる。

POST /users(.:format) users#create

7.3まで終了

5/20 18:30 終了

5/22 8:20開始

・ユーザー登録に成功後の動き

*別のページにリダイレクト(Redirect)する ※Webでは一般的

(例)redirect_to @userを追記

def create
    @user = User.new(user_params)
    if @user.save
      redirect_to @user
    else
      render 'new', status: :unprocessable_entity
    end
end

redirect_to @userは↓と同義
redirect_to user_url(@user)

*DBのリセット
rails db:migrate:reset

7.4まで終了

5/22 9:00 終了

5/22 18:30 開始

・プロ品質のデプロイ

*ユーザー登録をセキュアにする
sample_appは、ユーザー登録フォームで送信するとデータがネットワーク越しに流される。
→ネットワークに流れるデータは途中で捕捉できるため、扱いには注意が必要⚠️

Transport Layer Security(TLS)を用いてセキュアにする。
TLS:ローカルのサーバーからネットワークにデータを送信する前に大事な情報を暗号化する技術。

config/environments/production.rbにて
config.force_ssl = true
とすることで、あらゆるブラウザでTLSを強制し、httpsによる安全な通信を確立する。

Rails.application.configure do
  .
  .
  .
  # Force all access to the app over SSL, use Strict-Transport-Security,
  # and use secure cookies.
    config.force_ssl = true
end

Renderドメイン内で実行されるアプリケーションについては、RenderのTLS証明書が利用できる為
デプロイすれば、自動的にTLSが有効になる。

*本番環境
本番環境ではPumaというHTTPサーバーを使う。
Pumaは、大量のリクエストを受信できる能力を備えたサーバー。
※Rails 5以降ではデフォルトでPumaが使えるようになっている。

*RenderのStart Commandを設定。
Renderダッシュボード「Settings」で、
デフォルトの
Start Command

bundle exec puma -C config/puma.rb
に置き換える。

*本番データベースの設定

本番環境のデータベースでPostgreSQLが使われるように設定する。

データベース設定ファイルconfig/database.ymlのproductionセクションを追記↓

production:
  <<: *default
  adapter: postgresql
  encoding: unicode
  url: <%= ENV['DATABASE_URL'] %>

第7章終了!

5/22 19:00 終了

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?