Forum: Ruby on Rails Fixtures loading *very* strangely

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.
Brent M. (Guest)
on 2009-02-09 23:47
Hi all,

I've just hit a snag, and I'm hoping somebody out there can help.

I'm working on an app that uses some legacy tables.  One of them doesn't
have a column named "id" so I've got the following:

class Student
  set_primary_key 'pidm'
  alias_attribute :id, :pidm
end

When I'm testing, I need 5 student fixtures.  I have them defined like
this one:

john_doe:
  status: student
  department:
  alumni:
  title:
  applicant:
  student_status:
  staff:
  pref_first_name:
  faculty:
  applicant_status:
  year_in_school: freshman
  chair:
  pidm: 12345678
  reed_id: L12345
  program:
  middle_initial:
  first_name: John
  student: Y
  login: doej
  last_name: Doe
  email: removed_email_address@domain.invalid

When I load the fixtures into my test database with "rake
db:fixtures:load RAILS_ENV=test" everything works great.  However, when
I run my test suite, and rails loads the fixtures, I get a big problem:
three of the fixtures aren't loading with their pidm (id) correctly.
All three load with a pidm of 91, which is problematic since it breaks
any associations involving that primary key.

The two other fixtures load ok, though, which makes me very confused.

I've played around with the data differences between the fixtures, and
futzing the non-pidm data doesn't seem to do anything.

Has anybody encountered this?  Any advice?

Thanks!
Rob B. (Guest)
on 2009-02-10 00:44
(Received via mailing list)
On Feb 9, 2009, at 4:47 PM, Brent M. wrote:

>  set_primary_key 'pidm'
>  alias_attribute :id, :pidm
> end

I'm not sure if it changes your situation, but you shouldn't need that
alias_attribute.  Just use id and ActiveRecord should use your real
primary key column under the covers.

-Rob
Brent M. (Guest)
on 2009-02-10 00:54
I've tried that; there are lots of things out there that assume the
primary key is called "id" -- this simple fix makes all of them work.

Even if I remove it, though, I still get the same weird loading
behavior. :(

Rob B. wrote:
> On Feb 9, 2009, at 4:47 PM, Brent M. wrote:
>
>>  set_primary_key 'pidm'
>>  alias_attribute :id, :pidm
>> end
>
> I'm not sure if it changes your situation, but you shouldn't need that
> alias_attribute.  Just use id and ActiveRecord should use your real
> primary key column under the covers.
>
> -Rob
This topic is locked and can not be replied to.