Ruby on Rails を使ってみよう(その 2)

Rails アプリケーションの土台をつくる

最初にアプリケーションの土台をつくります。作り方は簡単です。アプリケーションを作りたいディレクトリに移動して

> rails new sample

と打ち込めば sample という名前のディレクトリの下にアプリケーションの土台が自動で出来上がります。もしくは先に sample というディレクトリを作ってからそこに移動して

> rails new .

でも構いません。最新版の Rails (今は 3.2.8) ならこれ以上することはありません。楽チン !

Model を作る

モデルを作るのも簡単です。sample ディレクトリに移動して

rails generate model customer name:string phone:string --timestamps=false

と打ち込みます。最後のオプションは、データを追加された日時で管理するためのカラムは作りません、という意味です。主キーとなる id は自動で生成されるので、自分で指定する必要はありません。

Model を自動生成すると sample/db/migrate 直下に yyyymmddhhmmss_create_customers.rb というファイルが出来上がります(yyyymmddhhmmss はタイムスタンプ)。このファイルをちょっと修正します。

class CreateCustomers < ActiveRecord::Migration
  def change
    create_table :customers do |t|
      t.string :name, :null => false
      t.string :phone, :null => false
    end
  end
end

各カラムの入力を必須にする(NOT NULL 制約を付ける)ために

:null => false

というのを追加しています。

ここまで終わったら、コマンドプロンプトで sample ディレクトリで

>rake db:migrate

を実行します。すると自動で sample/db 直下に development.sqlite3 というデータベースファイルと、その中に customers テーブルが出来上がります。

最後は初期データの投入です。db/sample 直下の seeds.rb に以下を追加してください。

先頭に

# coding: utf-8

コメント行の後に

Customer.create(
  :name => '(株)ワイキキソフト',
  :phone => '090-AAAA-AAAA'
)

Customer.create(
  :name => '鈴木商事',
  :phone => '090-BBBB-BBBB'
)

Customer.create(
  :name => '斎藤模型店',
  :phone => '090-CCCC-CCCC'
)

Customer.create(
  :name => 'マクロハード',
  :phone => '090-DDDD-DDDD'
)

Customer.create(
  :name => '(株)ランヌ',
  :phone => '090-EEEE-EEEE'
)

seeds.rb を保存したらまたコマンドプロンプト

> rake db:seed

を実行してください。これで今作った customers テーブルに初期データが投入されました。Model の準備は以上です。

補足 : rake コマンドをいちいち実行する代わりに、全ての準備を整えてからまとめて

> rake db:setup

でもできます。このときは rake db:create から順番に全部を実行するので sample/db 直下にもう一つ test.sqlite3 というデータベースファイルが出来上がりますが、特に問題はありません。