0
1

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 3 years have passed since last update.

Rails ユーザー登録機能を一瞬で作ろう

Posted at

見てくださりありがとうございます。
自分は独学でrailsを勉強しているものです。
railsでWEBアプリケーションを作っているとユーザー登録の作成は必ず行いますよね!
なので今回はユーザー登録機能を実装するまでに必要なコードを淡々と書いて、コピペするだけでユーザー登録機能が作成できるようにします

###前提
アプリはすでに作成されている状態を想定しています(rails new アプリ名)
今回のユーザー登録機能とはユーザー登録画面でユーザーを新規登録するまでであり、登録内容の修正、ユーザー削除等の機能は作りません
あくまでもユーザー新規登録機能を作成し、成功すればユーザー詳細画面に飛ぶだけです
登録情報は名前とメールアドレスだけにしておきます

###ユーザーコントローラーの作成

コマンド
rails generate controller Users  show new

###ユーザーモデルの作成

コマンド
rails generate model User name:string email:string 

###ルートの作成

config/routes.rb
Rails.application.routes.draw do
  resources :users
end

###ユーザーコントローラーのアクションの作成

コマンド
class UsersController < ApplicationController

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

  def new
    @user = User.new
  end

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

  private

  def user_params
    params.require(:user).permit(:name, :email)
  end
end

createアクションに@user = User.new(user_params)このような記述がありますが、
実は@user = User.new(params[:user]) このようにも記述できます。
しかし後者はセキュリティー上良くありません。理由は後者の記述だと悪意のあるユーザーにでアプリケーションのデータベースが書き換えらる可能性があるからです。
今回で言うとname,email以外の例えばadminという値をリクエストに紛れ込ませ、管理者権限を奪い取ることができてしまいます。
ですのでuser_paramsによってnameとemail以外はリクエストの対象にならないように制限をかけることが正しい記述方法になります

redirect_to @user は redirect_to user_url(@user)と等価になります
これはユーザー作成が成功し、データベースへの保存が完了したらユーザー詳細ページに飛ぶことを示しています

###ユーザー登録画面の作成

app/views/users/new.html.erb
<h1>ユーザー登録</h1>
<%= form_with(model: @user, local: true) do |f| %>
    <%= f.label :name %>
    <%= f.text_field :name %>

    <%= f.label :email %>
    <%= f.email_field :email %>

    <%= f.submit "新規ユーザー登録", class: "btn btn-primary" %>
<% end %>

###ユーザー登録画面の作成(簡素ですが許して下さい)

app/views/users/show.html.erb
<h1>ユーザー詳細ページ</h1>
<p><%= @user.name %>,<%= @user.email %></p>

以上これだけの記述でユーザー登録が完成します。
登録内容にパスワードが必要だったり、ユーザー情報の編集、ユーザーの削除機能が追加されても簡単に少ない記述で多くの機能が作成できるのがrailsのいいところですよね!
見てくださりありがとうございました。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?