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
と記述すること。