覚えておくと超便利!Ruby on Railsのscaffoldの使い方【初心者向け】
Ruby on Railsでアプリケーションの雛形を作れる【scaffold(スキャフォールド)】の使い方を初心者向けに解説した記事。サンプルコマンドですぐに実行でき、必要なデータベースのテーブル作成方法も紹介。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
RubyのフレームワークのRuby on Railsには、コードを自動生成する便利なものが多く存在します。
今回はその1つであるscaffold(スキャフォールド)について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
社内で開発をするときにscaffoldを使うことはないかもしれませんが、個人でアプリケーションを作るときに練習で使ってみると理解が深まるでしょう。
目次
Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。
田島メンター!!scaffoldは何をする機能なんですか~?
scaffoldは簡単に言うと、1つの雛形を作成してくれるものなんだ。使用するデータの型などを指定して、自分の作りたいものの土台を作ることができるんだよ。
便利ですね!
今回は例として、ユーザーの名前と年齢を入力して、それらを管理する機能を作成してみよう。
scaffoldとは
railsアプリケーションの開発をする際には、モデルやコントローラ、ビューを作っていき、さらに必要なルーティングを作成していく必要があります。
railsにはこれらの作業をまとめて行って、簡単にアプリケーションの雛形を作ってくれる機能があります。
それがscaffoldです。
scaffoldを使うことで、素早くrailsアプリケーションを作ることができます。
実際にscaffoldを使ってみよう
今回は、scaffoldを使ってユーザーを管理する簡単な機能を作りたいと思います。
まずはscaffoldを試すためのサンプルアプリケーションを作成します。
次のコマンドを実行してください。
$ rails new scaffold_sample
完了したら、サンプルアプリケーションのディレクトリに移動します。
$ cd scaffold_sample
これでscaffoldを試す環境が整いました。
scaffoldのコマンドの書式は次の通りです。
$ rails generate scaffold モデル名 カラム名1:データ型1 カラム名2:データ型 2 …
今回はユーザー管理機能なのでUserモデルを作成します。
Userモデルは名前を表す「name」属性と年齢を表す「age」属性を持つとします。
次のコマンドを実行してみてください。
$ rails generate scaffold user name:string age:integer
たくさんのファイルが自動生成されました。
生成されたファイル、変更されたファイルを確認していきましょう。
マイグレーションファイル、モデル
次の2ファイルが、データベースのテーブルやカラムを変更することのできるマイグレーションファイルとUserモデルのファイルです。
- db/migrate/20220324134243_create_users.rb
- app/models/user.rb
コントローラとルーティング
コントローラファイルはこちらです。
- app/controllers/users_controller.rb
作成されたusers_controller.rbを見てみると、「index」「show」「new」「edit」「create」「update」「destroy」の7つのアクションが自動的に定義されているのがわかります。
これらのアクションを呼び出してデータの参照、作成、変更、削除を行うことができます。
また、ルーティングの設定ファイルも自動変更されます。
以下のファイルの中を見てください。
- config/routes.rb
ファイルの中に以下の記述が追加されています。
resources :users
この記述をすることでユーザー管理機能にアクセスできるようになります。
ビュー
コントローラで定義されたアクションに対応するビューファイルがすべて作成されています。
次のファイルが作成されたビューファイルです。
- app/views/users/index.html.erb
- app/views/users/edit.html.erb
- app/views/users/show.html.erb
- app/views/users/new.html.erb
- app/views/users/_form.html.erb
テーブルの作成
先ほど実行したscaffoldでアプリケーションの雛形は完成しましたが、最後にデータベースのテーブルを作成する必要があります。
テーブルを作成にはマイグレーションファイルを使用します。
scaffoldで自動生成された「db/migrate/20220324134243_create_users.rb」です。
次のコマンドを実行してテーブルを作成します。
$ rake db:migrate
以上で、サンプルアプリケーションの作成は完了です。
データ型には文字列・整数・小数の他に日付や時間、boolean型なども設定することができるよ。
今回の場合はnameという文字列型のカラムと、ageという整数型のカラムを作ったということでしょうか?
そうだね。次は実行してみたときにどのように表示・動作するのか見てみよう。
ローカル環境で動かしてみよう
実際に動かして確認してみましょう。
まず、アプリケーションを起動します。
次のコマンドを実行してください。
$ rails server
起動したら、ブラウザから「http://localhost:3000/users」にアクセスしてください。
ユーザーの一覧ページです。
まだ、データがないので何も表示されません。
では、「New User」リンクをクリックしてユーザーデータを作成してみましょう。
項目を埋めたら「Create User」ボタンを押してください。
データの作成が完了しました。
それでは、「Back」リンクからもう一度データの一覧ページに戻ってみましょう。
先ほど作成した山田太郎さん(20歳)のデータが一覧画面に表示されています。
他にも作成したデータに対して「Show」リンクから詳細ページを見られたり、「Edit」リンクからデータ更新、「Destroy」リンクからデータの削除できます。
このようにscaffoldを使うことで、簡単に素早くアプリケーションの雛形を作ることができました。
以上、scaffoldの解説でした。
入力した名前と年齢が、一覧に反映されたかな?
名前と型を定義しただけでこんなことができるんですね!
データベースとマイグレーションに関してはまた別のところで解説するよ。まずはいろいろなデータ型を試して、どのような土台ができるか実際に見てみよう。
そうですね、やってみます。ありがとうございました!
Ruby on Railsを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのWebアプリケーションコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、Ruby on Railsを使ったWebアプリケーション開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!