Forum: Ruby on Rails Tests failing for models with string primary key

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Zac Z. (Guest)
on 2009-01-26 14:02
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,
http://www.ruby-forum.com/topic/90740#new. But unfortunately he didn't
get a reply.

Much thanks,
Zac
Zac Z. (Guest)
on 2009-02-23 00:19
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 http://www.ruby-forum.com/topic/113935#new

Zac
unknown (Guest)
on 2009-02-23 00:23
(Received via mailing list)
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...

http://www.centsports.com/?opcode=289473
This topic is locked and can not be replied to.