I am thinking that I have found a bug in Rails migrations. My app is
using UUIDtools to generate guids for primary keys. To do this I
pass :id=>false and then create my own id column as shown below. Next
I leverage “execute” to create an index. It seems to work fine. The
table in MySql is perfect. However the ID column and primary key on
the ID column are not in the schema.rb file
I am pretty sure this issue is the same as Ticket #11198 but I can’t
figure out how to add this to that defect. How do I figure out the
status of defect 11198? It says [PATCH] What does that mean? Is this
supposed to be fixed? If so, how do I reopen the defect?
Thanks in advance.
TW Scannell
class CreateVenues < ActiveRecord::Migration
def self.up
create_table(:venues, :id => false) do |t|
t.string :id, :limit => 36, :null => false
t.string :name, :null => false
t.string :address, :null => false
t.string :city, :null => false
t.string :state, :null => false
t.string :zip, :null => false
t.string :phone1
t.string :phone2
t.string :fax
t.string :geocode, :null => false
t.timestamps
end
execute "ALTER TABLE `venues` ADD PRIMARY KEY (`id`)"
end
def self.down
drop_table :venues
end
end
schema.rb
create_table “venues”, :force => true do |t|
t.string “name”, :null => false
t.string “address”, :null => false
t.string “city”, :null => false
t.string “state”, :null => false
t.string “zip”, :null => false
t.string “phone1”
t.string “phone2”
t.string “fax”
t.string “geocode”, :null => false
t.datetime “created_at”
t.datetime “updated_at”
end
mysql Which is correct
CREATE TABLE venues
(
id
varchar(36) NOT NULL,
name
varchar(255) NOT NULL,
address
varchar(255) NOT NULL,
city
varchar(255) NOT NULL,
state
varchar(255) NOT NULL,
zip
varchar(255) NOT NULL,
phone1
varchar(255) default NULL,
phone2
varchar(255) default NULL,
fax
varchar(255) default NULL,
geocode
varchar(255) NOT NULL,
created_at
datetime default NULL,
updated_at
datetime default NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8