Ruby on Rails では scaffold(「足場」という意味)を利用することで、簡単にCRUD機能(Create, Read, Update, Delete)を組むことができ、ちょっとしたアプリのAPIが欲しい時などに活用すると、素早く足場が整います。
実行環境はこちらです
1 2 3 |
ruby 2.4.0 rails 5.1.6 editor cloud9 |
scaffoldコマンドの実行
以下は rails new で新規プロジェクトの作成からのコマンドラインです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# プロジェクト(myapp)を作成する $ rails new myapp # プロジェクトディレクトリに移動 $ cd myapp # scaffold実行 Userモデル、 name、 ageカラムの生成 $ rails g scaffold User name:string age:integer # マイグレーションでデータベースのテーブル作成 $ rails db:migrate # サーバー起動 $ rails s |
下記のurlで作成された画面にアクセスできます。
http://localhost:3000/users
上記の一連の流れをコマンド1発で実行したい場合
1 |
$ rails new myapp; cd myapp/; rails g scaffold User name:string age:integer; rails db:migrate; rails s |
生成/変更されたファイルとそのディレクトリ
scaffoldコマンドで生成されるファイル、変更されたファイルのディレクトリは以下の通りです。もし、assetsやhelpers, testなどのファイルを生成しないようにするにはこちらの記事を参考にconfig.generatorsを設定してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
[RAILS_ROOT] ┣ app ┃ ┣ assets ┃ ┃ ┣ javascripts ┃ ┃ ┃ ┗ users.coffee ┃ ┃ ┗ stylesheets ┃ ┃ ┣ scaffolds.scss ┃ ┃ ┗ users.scss ┃ ┣ controllers ┃ ┃ ┗ users_controller.rb ┃ ┣ helpers ┃ ┃ ┗ users_helper.rb ┃ ┣ models ┃ ┃ ┗ user.rb ┃ ┗ views ┃ ┗ users ┃ ┣ _form.html.erb ┃ ┣ _user.json.jbuilder ┃ ┣ edit.html.erb ┃ ┣ index.html.erb ┃ ┣ index.json.jbuilder ┃ ┣ new.html.erb ┃ ┣ show.html.erb ┃ ┗ show.json.jbuilder ┣ config ┃ ┗ routes.rb ┣ db ┃ ┗ migrate ┃ ┗ 20180915080606_create_users.rb ┗ test ┣ controllers ┃ ┗ users_controller_test.rb ┣ fixtures ┃ ┗ users.yml ┣ models ┃ ┗ user_test.rb ┗ system ┗ users_test.rb |
生成されたルーティングの確認
config/routes.rbは、scaffoldコマンドによってresources :usersの一行が追加されました。
config/routes.rb
1 2 3 4 |
Rails.application.routes.draw do resources :users end |
$ rails routes コマンドで生成されたルーティングの確認をしてみると、こちらも自動でCRUDを用意してくれるのがわかります。
1 2 3 4 5 6 7 8 9 10 |
$ rails routes Prefix Verb URI Pattern Controller#Action users GET /users(.:format) users#index POST /users(.:format) users#create new_user GET /users/new(.:format) users#new edit_user GET /users/:id/edit(.:format) users#edit user GET /users/:id(.:format) users#show PATCH /users/:id(.:format) users#update PUT /users/:id(.:format) users#update DELETE /users/:id(.:format) users#destroy |
scaffoldをやり直す
scaffoldをやり直す場合は同様のコマンドの”g”を”d”(destroyの省略)に変えて実行すればOKです。ただし、マイグレーションを実行した後であれば、rollbackでバージョンを戻してから実行します。
1 2 |
$ rails db:rollback # マイグレーション実行後の場合 $ rails d scaffold User name:string age:integer |
これで、generateによって作成/変更されたファイルは削除/元に戻すことができます。
ご覧いただいたように scaffoldを利用すると、Railsのレールに乗ってMVC(Model、View、Controller)のWebアプリケーションを素早く用意することができ、うまく使えば工数の削減になり、効率的な開発ができますね。
以上です!ありがとうございました!