modelをrails2.1.0で作ってみる
rails2.1.0で以下のコマンドを実行します
ruby script/generate model event
以下のファイルが作成される
class CreateEvents < ActiveRecord::Migration def self.up create_table :events do |t| t.timestamps end end def self.down drop_table :events end end
このt.timestampsがupdated_atやdeleted_atと同等の意味をなしているなんて・・・
以下はrails1.2.6を使ったときにcreate_tableに書き込んだ内容
t.column :title, :string t.column :contents, :text t.column :start_date, :datetime t.column :end_date, :datetime t.column :created_at, :datetime t.column :updated_at, :datetime t.column :deleted_at, :datetime
これをrails2.1.0で表すと
class CreateEvents < ActiveRecord::Migration def self.up create_table :events do |t| t.string :title, :null => false t.text :contents t.datetime :start_date, :end_date, :null => false t.datetime :deleted_at t.timestamps end end def self.down drop_table :events end end
凄いですよね。t.columnと記載する必要がなくなり、いきなり型を指定できて、同じオプションの場合、複数同時に宣言できる。。。とっても変わりましたね(汗)
同時に宣言しているのは以下の文です。
t.datetime :start_date, :end_date, :null => false
これでdb:migrateすると〜
mysql> desc events; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(255) | NO | | NULL | | | contents | text | YES | | NULL | | | start_date | datetime | NO | | NULL | | | end_date | datetime | NO | | NULL | | | deleted_at | datetime | YES | | NULL | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+
こんにゃ感じです。