Rails 3 - многие ко многим - как бы вы поступили? - PullRequest
1 голос
/ 20 марта 2012

Я нашел много ответов на StackOverflow, но я вроде застрял на этом Я сначала попробую описать словами, что мне делать:

У меня есть несколько приложений, каждое приложение может иметь один или несколько профилей (один ко многим). У меня также есть пользователи, которые имеют доступ к каждому приложению через различные профили. Каждый профиль может иметь несколько пользователей (от многих до многих). до сих пор нет проблем, я могу получить все профили, предоставленные пользователю.

Однако сложность здесь заключается в том, что для каждого профиля, поступающего из приложения, у пользователя есть имя пользователя, специфичное для каждого приложения. Когда я вижу сведения о пользователе, я хочу увидеть список всех профилей, в которых он находится, вместе с именем пользователя, которое он назначил для каждого приложения ...

Я уверен, что есть простой способ сделать это с рельсами, как обычно, но я не могу найти его. Как бы вы это сделали?

1 Ответ

2 голосов
/ 20 марта 2012

Итак, чтобы убедиться, что у меня есть это: приложение может иметь много профилей, а пользователи могут иметь много профилей. Так что это не простые отношения «многие ко многим» между Приложением и Пользователем, потому что Профиль - это первоклассный объект.

Rails обрабатывает простые отношения «многие ко многим» с ассоциацией has_and_belongs_to_many (HABTM), объявленной в моделях на обоих концах. То, что находится посередине, неважно и просто служит для объединения (связи) двух моделей.

Твой случай веселее. Ваш «многие ко многим» в Rails описан как «has_many: through», и я думаю, что ваш случай - очень хороший пример такого случая. В этом случае приложение и пользователь имеют много других через модель профиля. Профиль предназначен не только для того, чтобы связать их, он содержит имя пользователя и, возможно, многие другие детали отношений пользователя с его / ее приложениями.

Начните с этого превосходного руководства, которое должно показать вам, как (и почему) выбрать has_many: через и как все это смоделировать и настроить. Это (как вы предлагаете) одна из совершенно блестящих возможностей Rails.

Надеюсь, это полезно.

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