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