LoginSignup
2
0

More than 3 years have passed since last update.

Rails 5.2 Active Record マイグレーションでコンテントデータベースを作る

Last updated at Posted at 2019-04-29

Rails 5.2 で簡単なWikiサイトを作る - Part2
Rails 5.2 で簡単なWikiサイトを作る を作るの続きです。

環境

  • Rails 5.2.2
  • ruby 2.5.1p57
  • psql (PostgreSQL) 10.4

前提条件

本記事では、Rails、ruby、PGのインストールの内容を含みません。

  • ruby のインストールは、こちらの記事がわかりやすかったです。
  • Ruby on Rails のインストールは、こちらの記事がわかりやすかったです。

はじめに

git commit log

この記事では、Active Record マイグレーションでコンテントデータベースを作ります。

カラム 説明
title string タイトル
body text 本文
is_published boolean 公開フラグ

contents テーブルでは、ベーシックにこんな感じにしてみようと思います。

Rails Generate コマンドを用いて、テーブルを作成します。参考

$ rails g model Content title:string body:text is_published:boolean
      invoke  active_record
      create    db/migrate/20190429022702_create_contents.rb
      create    app/models/content.rb

マイグレーションして、データベースにテーブルを作成します。

$ rails db:migrate
== 20190429022702 CreateContents: migrating ===================================
-- create_table(:contents)
   -> 0.0076s
== 20190429022702 CreateContents: migrated (0.0077s) ==========================

:coffee:
ついでに、 便利な annotate gem も使ってみましょう。modelファイルや、controllerファイルの上部にカラムを追記してくれます。

./Gemfile
group :development do
  ...
 + gem 'annotate'
end

Gemfileにannotateを追加したら、bundle installです。
さらに、annotateをinstallしておきます。

$ bundle install
...
$ rails g annotate:install
      create  lib/tasks/auto_annotate_models.rake

参考

annotateが使えるようになったので、もう一回 rails db:migrate します。

$ rails db:migrate
Annotated (1): app/models/content.rb

./app/models/content.rb だけ中身を見てみます。こんな感じに、上部にテーブルの内容を追記してくれます。

./app/models/content.rb
# == Schema Information
#
# Table name: contents
#
#  id           :bigint(8)        not null, primary key
#  body         :text
#  is_published :boolean
#  title        :string
#  created_at   :datetime         not null
#  updated_at   :datetime         not null
#

class Content < ApplicationRecord
end

さらに、db/schema.rbも見ておきましょう。

./db/schema.rb
ActiveRecord::Schema.define(version: 2019_04_29_022702) do

  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"

  create_table "contents", force: :cascade do |t|
    t.string "title"
    t.text "body"
    t.boolean "is_published"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

end

最後に

git commit log

NEXT!

次は、Contentリストページを作っていきます。

Wikiサービス作りました

(小さく告知させてください:ear:)
簡単なWiki検索を、社内コミュニケーションチャネルから検索できるツールで、「Poii.io」と言います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0