2012-06-29 2 views
1

Есть ли эквивалент команды collection.build в Ruby on Rails, которая строит отношения между двумя уже существующими объектами модели? Например, если у меня есть модель User и модель Contact (связанная в обоих направлениях с помощью has_many_and_belongs_to), и я хочу добавить пользователя в коллекцию пользователей Contact и контакт с коллекцией контактов пользователя, есть ли какой-либо простой метод, который просто строит эту связь для меня? Или я должен выписатьЭквивалент build() с двумя существующими объектами

contact.users << some_user 
    contact.save 
    some_user.contacts << contact 
    some_user.save 

ответ

1

Я считаю, что:

contact.users << some_user 

достаточно.

Согласно Rails Guide to Active Record Associations:

Коллекция < < метод добавляет один или несколько объектов в коллекцию, создавая записи в соединительной таблице.

+0

Необходимо сохранить запись после добавления к этой коллекции? – Chiubaka

+0

Сохранение любой из объединяемых моделей не влияет на строки в таблице соединений, так что нет. Но я бы рекомендовал просто попробовать его в консоли, чтобы вы почувствовали это. –