Tests failing for models with string primary key

Hi,

My tests(rspec) are failing on models that has a String primary key.
Rails wrongly creates the test table with the primary key in Integer
format. As a result, the fixtures can not be imported, nor does
relationships match up.

The database is imported and needs to match with an external database,
so there is no possibly of changing the primary key to integer.

Does anyone know how to force Rails to recreate the test tables to
respect string primary keys?

Another poster also experienced this problem,
Tests failing on table with primary key as string - Rails - Ruby-Forum. But unfortunately he didn’t
get a reply.

Much thanks,
Zac

Zac Z. wrote:

Hi,

My tests(rspec) are failing on models that has a String primary key.
Rails wrongly creates the test table with the primary key in Integer
format. As a result, the fixtures can not be imported, nor does
relationships match up.

The database is imported and needs to match with an external database,
so there is no possibly of changing the primary key to integer.

Does anyone know how to force Rails to recreate the test tables to
respect string primary keys?

This fix this turned out to be easy.

Schema.rb is run to create the test tables. I edited my copy to the
following:

create_table “countries”, :force => true, :id => false do |t|
t.column “locode”

other columns

end

Manually assign ‘locode’ as primary key

execute “ALTER TABLE countries ADD PRIMARY KEY (locode);”

Hey Presto! My specs that use countries are now running.

Thanks to Non integer primary key - Rails - Ruby-Forum

Zac

I’ve made $109 on this free sportsbetting site, and my friend currently
has over
$200!..

You start with 10 cents and when you get to $20 you can cash out or keep
going!
Check it out…