railsでは簡単にこんなことができる!
「Ruby on RailsとはRubyのフレームワークだ」と聞きますね!
rails を使うとWebアプリケーションがつくれますが、rails を勉強していて、
本当に簡単に(魔法のように)、簡単な(簡易的な)アプリケーションを作る方法を知りました。
それが、scaffoldジェネレータを利用した方法です。紹介したいと思います〜。
scaffoldとは?
rails のアプリケーションでは、MVC(モデル、ビュー、コントローラー)を使って一つ一つ作成していき、ルーティングを設定しますが、そういうのをまとめて自動的に作ってくれるのがscaffoldジェネレータなのですね。
どんなときに使う?メリット・デメリットは?
(私の中では)scaffoldジェネレータを使用するときは、このような時があげられます。
- アプリケーションをすばやく作りたい!
- アプリケーションを手っ取り早く作りたい!
- アプリケーションをかーんたんに作りたい!
- アプリケーションを試しに作りたい!
メリットはこちらです。
- 技術力なくてもやってみたら作れる
- アプリケーションの雛形となる部分を簡単に作成できる
- 開発が効率的に進む
- なので、とても便利!
- rails の大まかな概要がある程度わかる
もちろんデメリットもあります。
- あやふやな知識のままでもサービスを作れてしまう
- なので、rails の深い理解が困難である
こんなのを作ってみる
ユーザーを作成し、投稿ができます。
ユーザーや投稿を、編集・削除できます。
アプリケーションの骨組みを作成する
ターミナルでお好きなディレクトリに、下のコマンドを実行し、アプリケーションの骨組みを作成します。
$ rails new greeting_app
$ cd greeting_app
ユーザーモデルを作る
アプリケーションのユーザーで使うモデルを作成します。
文字列にはstring
を、整数にはinteger
という型を使います!
integer
型のidは、重複のないキーを割り当てられます。
カラム名 | 型 |
---|---|
id | integer |
name | string |
string |
Usersリソースをscaffoldジェネレータで生成します。
scaffold
の引数には、リソース名を単数形にしたもの(user)にします。
データモデルの属性も一緒に追加します。
(idカラムはrailsによって自動的に自動的に追加されます!)
$ rails generate scaffold User name:string email:string
マイグレーションという1つのファイルが生成されました!(↓)
エディタで見ると、ファイル名の先頭には生成された時間が追加されているのがわかります。
そして、さっきのコマンドではオプションを追加していないt.timestamps
が作られています。
これは、created_at
とupdated_at
という2つのカラムを作成してくれます。
class CreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
end
end
次のコマンドで、データベースにテーブルを作ります。
$ rails db:migrate
ブラウザで見る
生成されたページをブラウザで見てみましょう!
別のターミナルでgreeting_app
に移動し、ローカルサーバーを立ち上げます。
$ rails server
http://localhost:3000/ をブラウザで開きます。
このような画面になっているとOKですね!
🗣「わーい! Railsを使用しています!」って書いてます。
http://localhost:3000/users を開いて、ユーザー一覧を見てみましょう!
/users
をつけると、insexアクション(ユーザー一覧)が呼び出されます。
まだユーザーは1人もつくられていないので、「New User」リンクを押し、「Name」「Email」を入力、「Create User」ボタンを押して作ってみましょう!作れました!
※ちなみに、ユーザーをCreateした直後に画面上にでる緑の文字「User was successfully created.」はflash
という機能を使っています!
画面にリンクが色々あるのでなんとなく分かると思いますが、この時点でユーザーの編集も削除もできますね!
ユーザーに関するページ
ページごとにURLも作られています。
URL | アクション | ページ内容 |
---|---|---|
/users | index | すべてのユーザーを一覧するページ |
/users/1 | show | idが1のユーザーを表示するページ |
/users/new | new | 新規ユーザーを作成するページ |
/users/1/edit | edit | id=1のユーザーを編集するページ |
URLとアクションの組み合わせを変更する
今のままでは、/
にアクセスしたときに「わーい! Railsを使用しています!」のままになっていて、/users
まで入力しないとアプリケーションを開けません。
そこで、ルーティングを変更してみましょう!(3行目を追加します。)
Rails.application.routes.draw do
resources :users
root 'users#index'
end
これで、「わーい! Railsを使用しています!」の代わりに、indexアクションが呼び出されることになります!
※scaffoldで生成されたユーザーコントローラー内のアクションは、app/controllers/users_controller.rb
で確認することができます。ここを深く見てみるとどういうふうにページを表示しているかが見れて面白いですね〜。
つづくよ
ポストモデルもscaffoldジェネレータを利用して作っていきたいのですが、長くなってしまったので、次か、次の次かの記事に書こうと思います!てげっててすみません。
↓こちら参考にしました🎒
scaffoldを利用した開発(1)
scaffoldを利用した開発(2)
rails tutorial 「魔法のように」というのは、rails tutorial で使われていた言葉でした!