ブログアプリ④(記事投稿機能を作る準備をしよう)

アプリケーションの素はもう作ってあるので、データベースをつくる

$ rake db:create
Created database 'myblog_development'
Created database 'myblog_test'

できたー f:id:d_riko:20181126113316p:plain


続けてArticleモデルを作成

なおrails modelは新しくテーブルを作る時、rails g migrationは作成済みのテーブルを修正・削除したい時に使うものと捉えてる

$ rails g model article title:string, text:text, status:integer
Running via Spring preloader in process 85796
      invoke  active_record
      create    db/migrate/20181126024341_create_articles.rb
      create    app/models/article.rb
      invoke    test_unit
      create      test/models/article_test.rb
      create      test/fixtures/articles.yml

よしよし

できあがったマイグレーションファイルを見てみる f:id:d_riko:20181126114631p:plain

お゛お゛ん゛!?カンマが変なとこについてる!??

落ち着いてrails d modelで一旦削除

で、今度はこれ

$ rails g model article title:string text:text status:integer

できあがったのがこちら

f:id:d_riko:20181126115116p:plain

複数カラムまとめて作るからカンマ入れたけど、いらなかったんだねぇ


このマイグレーションファイルを元にテーブルつくるよ

$ rake db:migrate
== 20181126024931 CreateArticles: migrating =========================
-- create_table(:articles)
   -> 0.0384s
== 20181126024931 CreateArticles: migrated (0.0386s) ================

できたー

f:id:d_riko:20181126115444p:plain


さらにArticleコントローラを作成

何もオプションを設定しないとhelperやcoffeeなどの使わないファイルも作成されるので、それは作らないようにする

ただし書き方がわからず、このコマンドで試しに実行したら作成されちゃった

$ rails g controller article --assets:none --helper:none

この記事で見た通り、config/application.rbに記載してあげるしかないのかなぁ。でもrailsドキュメントにはオプションとして載ってるから書き方の問題な気がする

qiita.com

config/application.rb

module Myblog
  class Application < Rails::Application
    config.generators do |g|
      g.helper false
      g.javascripts false
      g.stylesheets false
      g.test_framework false
    end
  end
end

これでもう一度コントローラ作成

$ rails g controller articles
Running via Spring preloader in process 40742
      create  app/controllers/articles_controller.rb
      invoke  haml
      create    app/views/articles
      invoke  assets
      invoke    coffee
      invoke    scss

必要なファイルだけできたー!

rails g scaffoldすればモデル・コントローラ・ビューを一通り作成できるのだけどね

不要なファイルが多くあるとどれを使えば分からなくなるので、今は必要最低限のものだけ作るようにする


閑話休題

最後にルーティングの設定とビューファイルを作って、画面が表示されることを確認しよう

config/routes.rb

Rails.application.routes.draw do
  root 'articles#index'
end
controllers/articles_controller.rb

class ArticlesController < ApplicationController
  def index
  end
end
views/article/index.html.haml を作成

"Hello world!"

準備完了

rails sでサーバを起動してローカル環境に接続

できたー f:id:d_riko:20181126123254p:plain

これにて準備はOK

次は記事の投稿と表示ができる機能をつくるよ