Cannot get fixtures working (with has_and_belongs_to_many)

Hello,

I have the following scenario: class User; has_and_belongs_to_many :roles; end class Role; has_and_belongs_to_many :users; end #roles schema only has name (string) as attribute an additional table 'roles_users' with user_id (integer) and role_id (integer) was necessary. Then I created a fixture in users.yml: admin:   roles: admin, guest and in roles.yml: guest:   name: guest admin:   name: admin

This should work as mentioned in the docs: http://api.rubyonrails.org/classes/Fixtures.html But the following line did not pass: assert_not_nil users(:admin).roles.find_by_name('admin') Because users(:admin).roles is empty!

For the problem I crawled a lot of docs but I cannot see where I made a mistake. Could someone lead me in the right direction?

Regards, Peter.

Hmmh,

even after cleaning up the roles_users (without timestamp) it does not work (Hint from [1]) Tried out different order of fixture importing -> nothing helps.

So, I switched to the old way to define fixtures [2] and it works :slight_smile:

Regards, Peter.

[1] http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/ea4de9d194fefc2d/62cd3b8f365eba8b [2] http://railsforum.com/viewtopic.php?id=50

This is the only message I've looked at, but can you turn the join table's fixture into an ordered map:

--- !omap - first:      id: "1"      role_id: "1"      user_id: "1" - second:      id: "2"      role_id: "1"      user_id: "2"

-Rob

Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com

Thanks for the answer Rob! The intention was to avoid the the explicit definition of a join table in the fixtures, like it is possible since some months. See 'Let‘s make the HABTM fixture go away. ' in http://api.rubyonrails.org/classes/Fixtures.html

For your approach: I will put the omap into a roles_users.yml file, right?

Regards, Peter.

Thanks for the answer Rob! The intention was to avoid the the explicit definition of a join table in the fixtures, like it is possible since some months. See 'Let‘s make the HABTM fixture go away. ' in http://api.rubyonrails.org/classes/Fixtures.html

Hadn't seen that. (But I haven't used a HABTM association in a while
either.)

For your approach: I will put the omap into a roles_users.yml file, right?

Regards, Peter.

Yes, that's right. I noticed that the "YAML Fixtures" section of that
page you referenced describes the omap type also.

-Rob