Dodawanie rekordu relacji

Tabele users i roles mam połączone relacjami z tabele assignment, tak, żeby pomiędzy users i roles była relacja wiele do wiele. Żeby wypisać role użytkownika wpisuje np. kod:

puts user.roles

To jednak tylko wypisuje role i żeby przypisać nową rolę użytkownikowi muszę utworzyć “ręcznie” nowy obiekt (nowy rekord) Assignment. Chcę obejść tą konieczność.

Wiem że mogę zrobić metodę

user = User.find 1 role = Role.find 1 user.add_role role
Zastanawiam sie jednak nad bardziej intuicyjnym rozwiązaniem, coś w stylu

user = User.find 1 role = Role.find 1 user.role+= role
Tylko nie wiem czy coś takiego się da zrobić, a jeśli się da to jak (nie chodzi mi o kod metody, bo to wiem jak zrobić, ale chodzi mi bardziej o konstrukcję nazwy metody)

user.roles << Role.find(1)

A jeśli do tabeli assignments prowadziłaby jeszcze jedna relacja z tabelą, taka jak pomiędzy users a assignment. Wtedy twój sposób spowodowałby, że to trzenie pole byłoby nil. Jest jakiś sposób żeby to rozwiązać czy trzyma ręcznie dodać ten obiekt

user = User.find 1 role = Role.find 1 table = Table.find 1 assignment = Assignment.new assignment.user = user assignment.role = role assignment.table = table

user = User.find(1) user.assignments.build(:role => Role.find(1), :table => Table.find(1))
O takie coś chodzi ?

tak dokładnie, dzięki