Какой самый чистый способ обработки отношений многие ко многим в ruby ​​на рельсах? - PullRequest
0 голосов
/ 23 июля 2010

У меня есть одна модель, скажем, пользователь, которая может жить в нескольких городах (представлена ​​как другая модель). Если я создаю нового пользователя, мне нужно выбрать (и отредактировать) разные города, в которых он живет. Из-за нехватки времени я часто получаю решение «хакернее, чем хотелось бы», включающее что-то вроде: http://blog.hasmanythrough.com/2006/4/20/many-to-many-dance-off.

Какие-нибудь хорошие решения, которые популярны у SO?

веселит ...

ленивец

1 Ответ

0 голосов
/ 23 июля 2010

Ассоциация has_and_belongs_to_many была создана именно для этой ситуации. Вот документация по нему: http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_and_belongs_to_many

В противном случае, если вам нужно хранить информацию о самой ассоциации (поля, которые не существуют в таблице города или пользовательской таблице, но между ними), вы можете просто установить две параллельные ассоциации has_many_through, и создать отдельную таблицу 'user_city'. Так было бы в пользовательской таблице

has_many :user_cities
has_many :cities, :through => :user_cities

и в таблице городов

has_many :user_cities
has_many :users, :through => :user_cities

Затем вы МОЖЕТЕ просто позвонить: user.cities и получить список городов, в которых живет пользователь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...