scaffoldを利用したRuby on Railsアプリ開発
アプリの準備
% rails new myapp -d mysql % rails -v Rails 5.2.4.2 % ruby -v ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin19]m % mysql --version mysql Ver 14.14 Distrib 5.6.47, for osx10.15 (x86_64) using EditLine wrapper
scaffoldの使い方
モデル生成
% rails generate scaffold モデル名 カラム名1:データ型1 カラム名2:データ型2 ... % rails generate scaffold author name:string Running via Spring preloader in process 8501 invoke active_record create db/migrate/20200410235011_create_authors.rb create app/models/author.rb invoke test_unit create test/models/author_test.rb create test/fixtures/authors.yml invoke resource_route route resources :authors invoke scaffold_controller create app/controllers/authors_controller.rb invoke erb create app/views/authors create app/views/authors/index.html.erb create app/views/authors/edit.html.erb create app/views/authors/show.html.erb create app/views/authors/new.html.erb create app/views/authors/_form.html.erb invoke test_unit create test/controllers/authors_controller_test.rb create test/system/authors_test.rb invoke helper create app/helpers/authors_helper.rb invoke test_unit invoke jbuilder create app/views/authors/index.json.jbuilder create app/views/authors/show.json.jbuilder create app/views/authors/_author.json.jbuilder invoke assets invoke coffee create app/assets/javascripts/authors.coffee invoke scss create app/assets/stylesheets/authors.scss invoke scss create app/assets/stylesheets/scaffolds.scss
依存したモデルの生成
% rails g scaffold book name:string author:references Running via Spring preloader in process 9327 invoke active_record create db/migrate/20200412021453_create_books.rb create app/models/book.rb invoke test_unit create test/models/book_test.rb create test/fixtures/books.yml invoke resource_route route resources :books invoke scaffold_controller create app/controllers/books_controller.rb invoke erb create app/views/books create app/views/books/index.html.erb create app/views/books/edit.html.erb create app/views/books/show.html.erb create app/views/books/new.html.erb create app/views/books/_form.html.erb invoke test_unit create test/controllers/books_controller_test.rb create test/system/books_test.rb invoke helper create app/helpers/books_helper.rb invoke test_unit invoke jbuilder create app/views/books/index.json.jbuilder create app/views/books/show.json.jbuilder create app/views/books/_book.json.jbuilder invoke assets invoke coffee create app/assets/javascripts/books.coffee invoke scss create app/assets/stylesheets/books.scss invoke scss identical app/assets/stylesheets/scaffolds.scss
アソシエーションと連携削除
class Author < ApplicationRecord has_many :books ,dependent: :destroy end
データベース作成
% rails db:create Created database 'myapp_development' Created database 'myapp_test' % rails db:migrate == 20200410235011 CreateAuthors: migrating ==================================== -- create_table(:authors) -> 0.0123s == 20200410235011 CreateAuthors: migrated (0.0124s) ============================= 20200412021453 CreateBooks: migrating ====================================== -- create_table(:books) -> 0.0139s == 20200412021453 CreateBooks: migrated (0.0140s) =============================
データの追加と削除
% rails c > Author.create(name:'村上春樹') > Book.create(name:'ノルウェーの森', author_id:'1') > Author.destroy(1)