How to declare several HABTM-relationships?


#1

Hello,

Is it possible to have several HABTM-relationships for the same object?

Example: Imagine I have 3 objects (classroom, student, teacher) and
define the associations for the student as:

class Student < ActiveRecord::Base
has_and_belongs_to_many :classrooms
has_and_belongs_to_many :teachers

class Classroom < ActiveRecord::Base
has_and_belongs_to_many :students

class Teacher < ActiveRecord::Base
has_and_belongs_to_many :students

When I create a new student I have checkboxes to display and assign the
student to a set of classrooms and teachers. This seems to work, the
student is saved but only one join-table (classrooms_students) is
populated with the relation. The students_teachers table is not
populated. Changing the order of the HABTM-declarations will reverse the
problem (ie, only the first declaration works).

Is it not possible to declare several relations like this, have I just
screwed up the syntax or committed some far greater sin in how I
structured the database?


#2

Bonicon wrote:

When I create a new student I have checkboxes to display and assign the
student to a set of classrooms and teachers. This seems to work, the
student is saved but only one join-table (classrooms_students) is
populated with the relation. The students_teachers table is not
populated. Changing the order of the HABTM-declarations will reverse the
problem (ie, only the first declaration works).

This was a bug in Rails 1.0. If you’re using it you’ll have to upgrade
to 1.1.


We develop, watch us RoR, in numbers too big to ignore.


#3

Thanks, I upgraded to 1.1 and it is working as it should now.