Home » ruby » scaffoldで一覧,詳細,新規作成,編集,削除に必要なものを一括生成 ruby on rails

scaffoldで一覧,詳細,新規作成,編集,削除に必要なものを一括生成 ruby on rails

rails g scaffold [アプリ名] [カラム:型] というのをターミナルで実行することにより、
一覧,詳細,新規作成,編集,削除に必要な コントローラ、モデル、ビュー が一括生成されます。
scaffold だけで初期的なブログが完成します。

では実際にやっていきましょう。

環境

ruby 2.4.1
ruby on rails 5.1.3
CentOS 7.3

scaffold による 一覧,詳細,新規作成,編集,削除 機能 の実装

まずはrailsアプリを作成していきます。今回は「test_app」という名前でrailsアプリを作成します。

$ rails new test_app

上記のコマンドでrailsアプリが作成されました。
アプリに移動します

$ cd test_app

scaffoldを実行する

scaffoldで実際に基本的な機能がつまったファイルを作成します。

今回 ブログのようなものを作成します。

title(タイトル), content(内容) の2つのカラムをもった blogモデル を作成していこうと思います。

$ rails g scaffold blog title:string content:text
Running via Spring preloader in process 10409
 invoke active_record
 create db/migrate/20170824191448_create_blogs.rb
 create app/models/blog.rb
 invoke test_unit
 create test/models/blog_test.rb
 create test/fixtures/blogs.yml
 invoke resource_route
 route resources :blogs
 invoke scaffold_controller
 create app/controllers/blogs_controller.rb
 invoke erb
 create app/views/blogs
 create app/views/blogs/index.html.erb
 create app/views/blogs/edit.html.erb
 create app/views/blogs/show.html.erb
 create app/views/blogs/new.html.erb
 create app/views/blogs/_form.html.erb
 invoke test_unit
 create test/controllers/blogs_controller_test.rb
 invoke helper
 create app/helpers/blogs_helper.rb
 invoke test_unit
 invoke jbuilder
 create app/views/blogs/index.json.jbuilder
 create app/views/blogs/show.json.jbuilder
 create app/views/blogs/_blog.json.jbuilder
 invoke test_unit
 create test/system/blogs_test.rb
 invoke assets
 invoke coffee
 create app/assets/javascripts/blogs.coffee
 invoke scss
 create app/assets/stylesheets/blogs.scss
 invoke scss
 create app/assets/stylesheets/scaffolds.scss

モデル名を指定してその次に [カラム名:型] を指定作成しています
この場合は blogモデルを作成してtitleカラムとcontentカラムを作成するという内容になっています。
プログラミングするにあたって型は非常に重要なので熟知しておきましょう。

モデルについて

カラムの型

データ方 説明
string 文字列
text 長い文字列
integer 整数
float 浮動小数
decimal 精度の高い小数
datetime 日時
timestamp より細かい日時
time 時間
date 日付
binary バイナリデータ
boolean Boolean型

引用元 http://railsdoc.com/rails

scaffoldによって生成されたファイルと内容

ファイル 説明
db/migrate/YYYYMMDDHHMMSS_create_XXXs.rb マイグレーションファイル
app/assets/javascripts/XXXs.js.coffee モデル固有のCoffeeScript
app/assets/stylesheets/XXXs.css.scss モデル固有のSCSSスタイルシート
app/assets/stylesheets/scaffolds.css.scss Scaffold共通のSCSSスタイルシート
app/controllers/XXXs_controller.rb コントローラファイル
app/views/XXXs/index.html.erb すべてのリストを表示
app/views/XXXs/edit.html.erb 編集ファイル
app/views/XXXs/show.html.erb 詳細ページ
app/views/XXXs/new.html.erb 新規ページ
app/views/XXXs/_form.html.erb フォーム用ページ
app/models/XXX.rb モデルファイル
app/helpers/XXXs_helper.rb ヘルパー
test/functional/XXXs_controller_test.rb コントローラ用テストファイル
test/unit/XXX_test.rb モデル用テストファイル
test/fixtures/XXXs.yml fixtureファイル
test/unit/helpers/XXXs_helper_test.rb テスト用
public/stylesheets/scaffold.css デフォルトのスタイルシート

引用元 http://railsdoc.com/rails

サーバーを起動してアクセスしてみる

一覧,詳細,新規作成,編集,削除に関するファイルが生成されましたので実際にサーバーを起動してアクセスしてみます。

生成されたマイグレーションファイルを実行しないとサーバーを起動してもアクセスできませんので、

マイグレーションファイルを実行します。

$ rails db:migrate
== 20170824191448 CreateBlogs: migrating ======================================
-- create_table(:blogs)
   -> 0.0154s
== 20170824191448 CreateBlogs: migrated (0.0190s) =============================

マイグレーションファイルが実行されたことによって実際に自分が設定したテーブルとカラムが作成されました。
では実際に http://localhost:3000/blogs にアクセスします

コンテンツを作成してみる

New Blog の部分を押下します

コンテンツを作成する部分の画面はこのようになってます。

実際にデータを記入して登録してみましょう。

登録すると詳細ページに遷移します。

コンテンツの内容の他に詳細ページでは Edit(編集) と Back(一覧画面へ戻る)のリンクがあります。

ではBackを押下して一覧画面へ戻ります。

一覧画面では登録されたものが列挙されています。

上記では使ってないですが、他にも削除や編集機能も兼ね備えてます。

ロジックを図で表すと下記のようになります。

scaffoldのフローチャート

引用元 http://www.techscore.com/tech/Ruby/Rails/quick-start/Rails4/4-1/

このような流れになってます。

scaffold のコマンドだけでこのようなを機能を一括実装できるのは、すごいと思いました。

 

参考文献

,

コメントを残す

%d人のブロガーが「いいね」をつけました。