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 というデータベースファイルが出来上がりますが、特に問題はありません。