作って学ぶRuby on Rails Vol.15 CRUDを学ぼう!その3


作って学ぶRuby on Rails Vol.15 CRUDを学ぼう!その3

作って学ぶRuby on Rails Vol.15 CRUDを学ぼう!その3

目次
  1. Modelへの登録処理
  2. Modelの主なメソッド
  3. データを参照する
  4. 条件を絞ってデータを参照する

Modelへの登録処理

次に入力フォームに入力した値をUserというModelを利用してデータベースへ登録してみましょう。

入力フォームに入力した値を送信するには、HTMLのinputタグを使用してsubmitしなければなりません。

RubyonRailsには、submitというメソッドが用意されており、簡単に送信できるようになっています。下記の1行をapp/views/users/new.html.erbへ追記して下さい。


<%= form_for @user do |f| %>
  <div>
  <%= f.text_field :name %>
  </div>
  <div>
  <%= f.select :gender, User.genders.keys.to_a %>
  </div>
  <div>
  <%= f.date_select :birthday %>
  </div>
  <div>
  <%= f.text_field :hometown %>
  </div>
  <div>
  <%= f.text_area :remarks %>
  </div>
  <div>
  <%= f.submit "送信" %>
  </div>
<% end %>

<%=f.submit“送信”%>と記述することで、フォームの内容をControllerへ送信することができます。

続いて、Controller側の処理を追記していきます。app/controllers/users_controller.rbを開き、user_paramsというメソッドを作成します。

user_paramsメソッド

params.require(:user).permit(:name,:gender,:birthday,:hometown,:remarks)end

クロスサイトリクエストフォージェリという攻撃を防ぐための記述なのですが、簡単に説明すると、permitメソッドの引数に指定されたパラメータ以外は、受け取らないという意味になります。

つまり、user_paramsメソッドを利用するとこで、name、gender、birthday、hometown、remarks以外の情報が送信されてきた場合は、エラーになります。

その後、createというActionに下記の3行を追記して下さい。

@user.saveredirect_to@user

1行目:UserというModelの引数にuser_paramメソッド(つまり送信されたパラメータ)を渡し、新たなユーザー情報を作成します。

2行目:1行目で作成された新たなユーザー情報に対し、saveメソッドを実行することで登録処理を行います。この時点で、新しいユーザー情報がデータベースに登録されます。

3行目:redirect_toメソッドは、引数である@userに格納された情報を参照するページを描画する処理になります。@userにはユーザー情報(UserというModel)が格納されているので、内部的にはshowというActionを再度実行してapp/views/users/show.html.erbを表示する形となります。※現状ではapp/views/users/show.html.erbには何も記述していないので、表示自体は空の状態です。app/views/users/show.html.erbについては次項で記述していきます。

実装後のUsersControllerは、下記のようになります。

classUsersController<ApplicationController

実装完了後、ブラウザで実際に登録処理を行ってみましょう。

Ruby_on_Rails_crud3-1

上の図のように、フォームに値を入力し、送信ボタンをクリックして下さい。

Ruby_on_Rails_crud3-2

クリック後、エラーが発生せず、ページが切り替わればデータの登録が完了しているはずです。

Modelの主なメソッド

本項でsaveメソッドを学習しました。saveメソッドはModelにあらかじめ実装されている組み込みメソッドになります。saveメソッドを利用することで、データの登録を行うことができます。

他にもModelには組み込みメソッドがいくつか存在するので、ここでご紹介いたします。

次項以降で全て利用することになります。

メソッド使用例実行結果

※name以外に、どのカラム名でも指定できます。※name以外に、どのカラム名でも指定できます。

データを参照する

データの登録の有無を確認するには、SQLiteのコマンドを実行する必要があります。

まず、config/database.ymlを開き、データベース名を確認しましょう。

※デフォルトの状態だと、データベース名はdb/development.sqlite3となっています。

下記のコマンドを実行して、SQLを実行できる状態にします。


$ sqlite3 db/development.sqlite3

下記のSQLを実行して下さい。

上記SQLの内容としては、usersテーブルから全てのユーザー情報を参照するという意味になります。

Ruby_on_Rails_crud3-3

SQL実行後、上の図のようにユーザー情報が取得できていれば、登録は成功しています。

SQLについて例:select*fromusers;SQLはStructuredQueryLanguageの略であり、データベースに関する操作を行うための言語になります。データを参照する場合は、特に条件を指定しない限りselect*from◯◯◯;の◯◯◯の部分にテーブル名を指定することで全てのデータを参照することができます。*(アスタリスク)はワイルドカードと呼ばれ、「全ての」を意味します。よって上記例では、usersテーブルの全てのカラムを参照することになります。

Rubyでのサービス開発スキルが身に付く

無料カウンセリングはこちら

条件を絞ってデータを参照する

このSQLだとusersテーブルからidがxxxのユーザー情報のnameカラムを参照します。

※RubyonRailsカリキュラム内では、Modelに頼ったCRUDをメインに進めるので、基本的にSQLの記述法や使用方法はあまり紹介しません。

確認後、上記コマンドでSQLiteを終了します。

NEXTLESSONユーザーを表示しよう!

PREVLESSONCRUDを学ぼう!その2

目次-Ruby&RubyonRailsテキスト目次


関連記事

CodeCampus編集部
この記事を書いた人
CodeCampus編集部
まずは7日間お試し!人気プログラミング講座を無料公開中
オンライン・プログラミングレッスンNo.1のCodeCamp