53.COM

日々の学習の記憶等々

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)