Fixtures loading *very* strangely


#1

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!


#2

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


#3

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. :frowning:

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