マイグレーション(rake db:migrate)の確認・Railsカラム生成メソッドとMySQLデータ型の対応表

はてなブックマークに追加はてなブックマーク Yahoo!ブックマークに登録 ニフティクリップに追加 Livedoor クリップに追加 BuzzurlにブックマークBuzzurlにブックマーク Twitterに投稿  

Railsでは、scaffold(スキャフォールド)がとても便利な機能です。CakePHPでも同じ機能がありましたね。
scaffoldとは土台、足場などの意味で、Railsにおいてモデルのクラス名を決定し、以下のコマンドを実行すると、scaffoldが行われ各種ファイルが自動生成されます。

ruby script/generate scaffold hoge name:string account:string

このコマンドにおいては、scaffoldに続くhogeがモデル名となります。
「name:string account:string」は、「DBテーブルのカラム名:データ型」を引数で指定します。

参考:Ruby on Railsのデータベースとモデルクラス・MVCの対応関係 - Ruby入門勉強ルーム


DBテーブルの「カラム名:データ型」を指定して、scaffoldしてやるとマイグレーションファイルも自動で生成されます。
マイグレーションにより、DBのテーブル・カラムを新たに作成したり、元に戻したりという作業が楽になります。
ためしに、以下のマイグレーションファイルを手動で作成し、マイグレーションを実行して(「rake db:migrate」)、DBカラムの実際のデータ型を確認してみました。
Rails2.0からは、カラムのデータ型を指定するのにシンボルの代わりに、メソッドとしても使えるようになっています。

class CreateTest < ActiveRecord::Migration
  def self.up
    create_table :test do |t|
      t.string :test_string
      t.text :test_text
      t.integer :test_integer
      t.float :test_float
      t.decimal :test_decimal
      t.datetime :test_datetime
      t.timestamp :test_timestamp
      t.time :test_time
      t.date :test_date
      t.binary :test_binary
      t.boolean :test_boolean
    end
  end
 
  def self.down
    drop_table :test
  end
end

「t.○○」の○○の部分がRailsによるカラムのデータ型を指定するメソッド名で、引数として「:test_string」と与えるのがカラム名となります。
Rails1.2までは、「t.string :test_string」は、「t.column :test_string, :string」とcolumnメソッドで、カラム名とデータ型をシンボル引数で渡していたようです。


上記のマイグレーションから確認できたデータベースのRailsのシンボル指定と、MySQLテーブルのカラムのデータ型との対応をまとめておきます。
Railsが表すカラムのデータ型と、実際のMySQLのデータ型がどのように対応しているのか。


MySQLデータベースでのRailsシンボルとデータ型の対応

Railsのメソッド名 | カラムのデータ型

string | varchar(255)
text | text
integer | int(11)
float | float
decimal | decimal(10,0)
datetime | datetime
timestamp | datetime
time | time
date | date
binary | blob
boolean | tinyint(1)


Railsのメソッド名と実際に生成されるカラムのデータ型では、以下のデータ型の名前が異なっているので注意です。

string | varchar(255)
integer | int(11)
binary | blob
boolean | tinyint(1)


日時: 2008年07月24日 01:21
コメントを投稿






トラックバック

■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/434

この記事にトラックバックされる方は、参照先が分かるようにするために、「マイグレーション(rake db:migrate)の確認・Railsカラム生成メソッドとMySQLデータ型の対応表」へのリンクをお願いいたします。
以下のHTMLタグをトラックバック送信元ページ内に挿入して下さい。



※この記事へのリンクがない、また関連のないページからのトラックバックは反映されませんので、ご了承下さい。






あわせて読みたいブログパーツ
フィードメーター - Ruby勉強ルーム