Forum: Ruby on Rails Cannot get fixtures working (with has_and_belongs_to_many)

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.
8e2149625bfd15a1546813b582d44d28?d=identicon&s=25 Peter (Guest)
on 2008-11-22 18:59
(Received via mailing list)
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.
8e2149625bfd15a1546813b582d44d28?d=identicon&s=25 Peter (Guest)
on 2008-11-23 23:23
(Received via mailing list)
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 :-)

Regards,
Peter.

[1]
http://groups.google.com/group/rubyonrails-talk/br...
[2]
http://railsforum.com/viewtopic.php?id=50
Ef3aa7f7e577ea8cd620462724ddf73b?d=identicon&s=25 Rob Biedenharn (Guest)
on 2008-11-23 23:47
(Received via mailing list)
On Nov 23, 2008, at 5:22 PM, Peter wrote:

> Peter.
>
> [1]
> 
http://groups.google.com/group/rubyonrails-talk/br...
> [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
8e2149625bfd15a1546813b582d44d28?d=identicon&s=25 Peter (Guest)
on 2008-11-26 08:57
(Received via mailing list)
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.

On Nov 23, 11:46 pm, Rob Biedenharn <R...@AgileConsultingLLC.com>
Ef3aa7f7e577ea8cd620462724ddf73b?d=identicon&s=25 Rob Biedenharn (Guest)
on 2008-11-26 15:46
(Received via mailing list)
On Nov 26, 2008, at 2:56 AM, Peter wrote:
> 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
This topic is locked and can not be replied to.