最初に覚えておきたい!Ruby on RailsのCRUDの使い方【初心者向け】
Ruby on Railsの基本であるCRUDについて解説しています。scaffoldを使いながらソースコードの書き方やブラウザでの表示を説明しています。これから学習を進める上で基本となる知識になりますのでここで理解しましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
RubyのフレームワークのRuby on Railsの学習をする上でまず抑えておきたい「CRUD」について解説していきます。
CRUDという単語だけでなく使い方をマスターすれば、今後の学習もスムーズに理解できるはずなのでしっかり覚えていきましょう。
なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。
田島メンター!!CRUDというのはいったい何ですか〜?
“Create”・”Read”・”Update”・”Delete”の頭文字を取ったもので、データベースに関する基本的な動作のことを言うよ。
“Create”が新しくデータを登録する、”Delete”は削除という感じですね。
そうだね。実際に動作を見てみようか。ここではscaffoldコマンドを使うよ。
CRUDとは
Ruby on Railsに限らずwebアプリケーション開発は四つの機能で基本作成されていると言われています。
新規作成(Create)、表示(Read)、更新(Update)、削除(Delete)の四つです。それぞれの頭文字を合わせてCRUDと呼ばれています。それでは実際にCRUDを動かしてみましょう。
CRUDを作ってみる
今回はsampleというRailsプロジェクトの中にscaffoldを作成していきます。
$rails g scaffold Post name:string container:text
その後
$ rake db:migrate
とし、rootをindexに設定してください。
するとこのような画面が表示されます。
今回はnameというstring型と、containerというtext型のカラムを作成しているよ。
このふたつにデータを入力するんですね。
scaffoldではCRUDの一式が揃ったものが自動で生成されているので、これを参照してみよう。
その後new postから新しいpostを作成すると以下のようになります。
このように新しいPostが作成されていることが確認できます。ここでindexのviewを確認してみましょう。
<table> <tbody> <% @posts.each do |post| %> <tr> <td><%= post.name %></td> <td><%= post.container %></td> <td><%= link_to 'Show', post %></td> <td><%= link_to 'Edit', edit_post_path(post) %></td> <td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td> </tr> <% end %> </tbody> </table> <br> <%= link_to 'New Post', new_post_path %>
特に注目していただきい部分はlink_toの部分です。それぞれにCRUDのアクションが確認できます。
今回は簡単にwebサービスの基礎であるCRUDを作成してみました。また、scaffoldは簡単に読めるコードなので興味のある方は是非読んでみるようにしましょう。
それぞれのアクションを確認するとどうなっているかな。
この場合「Show」がReadで「Edit」がUpdate、「Destroy」がDeleteになりますね。
そうだね。そして最初に入力を行ったのがCreateということになるんだ。データベースにはこれらの一連の動作が必要だということが分かるね。
データを扱う際の基本の流れがCRUDなんですね。ありがとうございました!
[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。