モデルクラスをいろいろ

モデルクラスを作成する

kenmituo@hoge ~/Documents/Aptana Studio 3 Workspace/support
$ rails generate model telecast member_name:string
      invoke  active_record
      create    db/migrate/20121009005600_create_telecasts.rb
      create    app/models/telecast.rb
      invoke    test_unit
      create      test/unit/telecast_test.rb
      create      test/fixtures/telecasts.yml

db/migrate/20121009005600_create_telecast.rb

class CreateTelecasts < ActiveRecord::Migration
  def change
    create_table :telecasts do |t|
      t.date :member_book
      t.string :member_name
      t.string :phone
      t.string :email
$ rake db:migrate
==  RentalHardwares: migrating ===============================================
-- create_table(:rental_hardwares)
   -> 0.1180s
==  RentalHardwares: migrated (0.1190s) ======================================

==  CreateTelecasts: migrating================================================
-- create_table(:telecasts)
   -> 0.0330s
==  CreateTelecasts: migrated (0.0340s)=======================================

カラムが足りないことに気がついた

kenmituo@hoge ~/Documents/Aptana Studio 3 Workspace/support
$ rails generate migration AddCampusToTelecasts campus:integer           
      invoke  active_record
      create    db/migrate/20121009023337_add_campus_to_telecasts.rb

class AddCampusToTelecasts < ActiveRecord::Migration
  def change
    add_column :telecasts, :campus, :integer
  end
end

$ rake db:migrate
==  AddCampusToTelecasts: migrating ===========================================
-- add_column(:telecasts, :campus, :integer)
   -> 0.1300s
==  AddCampusToTelecasts: migrated (0.1300s) ==================================

モデルクラスを作成する2

コマンドで入力するのは面倒すぎる。

$ rails generate migration AddColumnTelecast
      invoke  active_record
      create    db/migrate/20121010085849_add_column_telecast.rb

適当なカラム名と操作するテーブル名の指定だけで実行してみる

class AddColumnTelecast < ActiveRecord::Migration
  def up
  end

  def down
  end
end

空っぽができたので頑張って書く。

rake db:migrateを実行したあとにMysqlにコマンドでカラムを追加して、バージョン管理済みのMigrationファイルにカラム追加の辻褄合わせを加筆したらエラー出まくりで進まなくなった。コマンドで削除してからMigrationファイルに加筆して実行、、、

rails destroy migration add_column_telecast

追加するカラムの位置を指定

やっと見つけたのがマイグレーションでカラムを追加する場所を指定する

class AddColumnMediaCopies < ActiveRecord::Migration
  def change
    add_column :media_copies, :booked_id, :integer, :after=>:booked_name
  end
end

$ rake db:migrate
==  AddColumnMediaCopies: migrating ===========================================
-- add_column(:media_copies, :booked_id, :integer, {:after=>:booked_name})
   -> 0.3630s