#はじめに
初投稿になります。
今回は、railsの学習でマイグレーションについて学んだのでまとめていこうと思います。
#マイグレーションとは?
railsにおけるマイグレーションとは、直接SQL文を実行しなくても、rubyでテーブルを操作できる仕組みのことです。
マイグレーションファイルはrubyで書くことができ、テーブルの作成・削除、カラムの追加・変更などを行うことができます。
#モデルの作成
マイグレーションを行うためにはまず、データベースのテーブルに対応するモデルを作成します。
今回は、会員制のアプリを作るため、メンバーモデルを作成しています。
rails g model member
モデルのクラス名は先頭が大文字の単数形になります。
class Member < ApplicationRecord
end
#マイグレーション
モデルを作成すると、db/migrateディレクトリの下に「年月日時分秒_create_テーブル名.rb」というファイルができます。このファイルをマイグレーションスクリプトといいます。
ここにデータベースの構成をrubyで書いていきます。
class CreateMembers < ActiveRecord::Migration
def change
create_table :members do |t|
t.string :name, null: false
t.string :full_name
t.string :email
t.date :birthday
t.integer :sex, null: false, default: 1
t.boolean :administrator, null: false, default: false
t.timestamps
end
end
end
[null: false]というオプションは空の値は保存されないように制約を付けるためのものです。空の状態で保存しようとするとエラーになります。
また、t.timestampsによってcreate_atとupdate_atという時刻型のカラムが2つできます。Railsではレコードを作成した際にその時刻を自動的に作成し、更新したときにはその更新時刻を新しくするので、2つのカラムを作っておけばレコードの作成と更新の時刻を調べられるようになります。
マイグレーションを実行します。
rails db:migrate RAILS_ENV=production
本番用のデータベースにマイグレーションを行いたいときはRAILS_ENV=productionを付けてマイグレーションを実行します。
これで、データベースにマイグレーションファイルの構成を反映できました。
#おわりに
いずれ、マイグレーションの詳細(カラムの追加・変更、ロールバック、インデックス)についても追記していきます。
#参考文献
改訂4版 基礎 Ruby on Rails (IMPRESS KISO SERIES)
https://www.amazon.co.jp/改訂4版-Ruby-Rails-IMPRESS-KISO/dp/429500460X