ブログアプリ④(記事投稿機能を作る準備をしよう)
アプリケーションの素はもう作ってあるので、データベースをつくる
$ rake db:create Created database 'myblog_development' Created database 'myblog_test'
できたー
続けて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
よしよし
できあがったマイグレーションファイルを見てみる
お゛お゛ん゛!?カンマが変なとこについてる!??
落ち着いてrails d model
で一旦削除
で、今度はこれ
$ rails g model article title:string text:text status:integer
できあがったのがこちら
複数カラムまとめて作るからカンマ入れたけど、いらなかったんだねぇ
このマイグレーションファイルを元にテーブルつくるよ
$ rake db:migrate == 20181126024931 CreateArticles: migrating ========================= -- create_table(:articles) -> 0.0384s == 20181126024931 CreateArticles: migrated (0.0386s) ================
できたー
さらにArticleコントローラを作成
何もオプションを設定しないとhelperやcoffeeなどの使わないファイルも作成されるので、それは作らないようにする
ただし書き方がわからず、このコマンドで試しに実行したら作成されちゃった
$ rails g controller article --assets:none --helper:none
この記事で見た通り、config/application.rbに記載してあげるしかないのかなぁ。でもrailsドキュメントにはオプションとして載ってるから書き方の問題な気がする
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
でサーバを起動してローカル環境に接続
できたー
これにて準備はOK
次は記事の投稿と表示ができる機能をつくるよ