Rails 3, используя has_many и полиморфизм или что-то еще? - PullRequest
0 голосов
/ 11 января 2011

У меня есть проблема, которую я не могу решить.Проблема в том, что у меня есть одна пользовательская модель и одна модель событий, а в модели событий пользователь может иметь несколько ролей.Мы также можем добавить обслуживающего персонала либо существующего пользователя, либо создать поддельного пользователя, которого можно преобразовать (просто с помощью флага в БД) в реального пользователя.пользователи Я использую вложенные формы.

Так у кого-нибудь есть идеи, как решить эту проблему?Я пробовал с habtm, has_many: с полиморфизмом и ИППП, но безуспешно.Заранее спасибо!

1 Ответ

1 голос
/ 11 января 2011

Вы хотите многопрофильные отношения, но я не думаю, что они вам нужны. Вы не можете сделать это полиморфным. Вот моя рекомендуемая установка:

Для ваших столбцов таблицы событий:

  • ID
  • creator_id (FK для users.id)
  • (специфичные для события поля)

Сохраните существующие таблицы пользователей как есть ...

Теперь самое интересное - таблица users_events:

  • ID
  • user_id (FK users.id)
  • event_id (FK events.id)
  • is_admin? (Булево)
  • is_paid? (Булево)
  • is_attended? (Булево)

Что касается решения вашей несуществующей проблемы с посещаемым пользователем - если вас не интересуют данные пользователя, просто оставьте user_id NULL, где это применимо. Если вам нужны данные, я предлагаю использовать то, что вы уже предложили - логический флаг.

...