k01ken’s b10g

He110 W0r1d!

Ruby on Railsでデータベースと接続し、テーブルを作成する

開発環境はWindows 7 Professional(32bit)+Ruby 2.3.3p222+Rails 4.2.1。

Railsで簡単なアプリケーションを作る - k01ken’s b10g
前回の続きになります。

・データベースへの接続の設定
接続の設定はconfig/database.ymlで行います。

Railsにはアプリケーションのモード(環境)が3つある。
開発 development コードを書きながらブラウザーで確認するための環境。
テスト test 自動テストのための環境
本番 production ウェブサイトを一般に公開するときの環境

・データベースの作成
ruby bin/rake db:create
SQLiteは1つのデータベースを1つのファイルとして扱う。db:createによって、
development.sqlite3とtest.sqlite3ができる。本番用のデータベースを作成するときは、
ruby bin/rake db:create RAILS_ENV=production
と入力する。逆に削除したいときは、
ruby bin/rake db:drop
と入力する。

config/application.rb
config.time_zoneのコメントアウトを外して、'~'の中をTokyoに変更

・モデルの作成
ruby bin/rails g model モデル名
ruby bin/rails g model member
モデル名がmemberだと、データベース名は複数形のmembersのような複数形になる。
モデルのクラス名はMemberのような頭文字が大文字になります。
モデル名は単数形が決まり。member_imageと指定すると、MemberImageというモデル名で、
member_imagesという名前のテーブルができます。
app/models/member.rb

マイグレーション
db/migrate/年月日時分秒_create_テーブル名.rbのファイルが作成されています。
このファイルはマイグレーションスクリプトといいます。
changeメソッド内のcreate_tableは、テーブル作成を行うものです。
カラムは、t.カラムの型 :カラム名という形で記述。例えば、nameという文字列型の
カラムを作成するなら、

create_table :members do |t|
	t.string :name # ここを追加
	t.timestamps null: false
end

とします。ためしにテーブルを作ってみましょう。

class CreateMembers < ActiveRecord::Migration
  def change
    create_table :members do |t|
	t.integer :number, null: false
	t.string :name, null: false
	t.string :full_name
	t.string :email
	t.date :birthday
	t.integer :gender, null: false, default: 0
	t.boolean :administrator, null: false, default: false
      	t.timestamps
    end
  end
end

以上を作成します。次に、Rakeのdb:migrateタスクを実行します。
ruby bin/rake db:migrate
コマンドを入力して、データベースにテーブルmembersが作成されます。
本番用の場合は、オプションとして、RAILS_ENV=productionをつけます。
typeというカラム名は使えない。どうしても使いたい場合は、モデルクラス内で、

class Member < ActiveRecord::Base
	self.inheritance_column = nil

と記述すること。