Разработка в mogoid для нескольких пользователей с разными данными

Я использую rails 3.2.7, mongoid 3 и пытаюсь использовать разработку для учетных записей пользователей.

Прежде чем я начну: я много искал свою проблему и прочитал много руководств, но ни один из них не подходил для моих нужд.

У меня есть аналогичная проблема, такая как разработка и несколько "пользовательских" моделей

но я использую mongodb, поэтому я думаю, что проблема не совсем такая же.

У меня есть 3 типа пользователей:

  1. Ясли, которые могут иметь много мест и могут управлять ими (редактировать информацию).
  2. Пользователь, который может искать места (даже ни один пользователь не может) и создавать свои списки мест. Также пользователь может комментировать и отмечать места.
  3. Администратор, который может редактировать/удалять что угодно, так что админ - бог.

Итак, все они имеют разные данные (кроме информации для входа), и я не знаю, какое решение лучше.

STI было бы хорошо, если бы у них были одинаковые данные и разные действия, но данные тоже разные (но я использую монгоид, так что, может быть, это будет хорошо?)

Однопользовательская модель с ролями - еще одно решение, но я не знаю, как хранить разные данные, может быть, с полиморфным? Я не совсем понимаю, как это должно быть реализовано с помощью devise и, возможно, cancan.

Может есть третий?

Я знаю, что такое STI, полиморфные ассоциации, а также как реализовывать роли с помощью CanCan, но проблема в том, что я не знаю, как их связать с devise?

Если будет несколько регистрационных форм или одна, не беда. Мне также не нужно использовать devise.

Я нашел несколько руководств/примеров использования devise, monogid, ролей для многопользовательских приложений, но это когда пользователи хранят одни и те же данные, поэтому они мне не подходят.

Можете ли вы дать мне совет, или, может быть, ссылку, которая могла бы мне помочь?

Спасибо за помощь :)


person Przemysław Niekraś    schedule 06.01.2013    source источник
comment
Вы можете создавать разные контроллеры для разных пользователей и хранить данные без зависимости от ролей. Просто создайте контроллеры для разных вариантов использования.   -  person Fa11enAngel    schedule 06.01.2013
comment
Ну а пока сделал STI с одним контроллером, но без Devise. Я сделал это с нуля. Я собираюсь сделать так, как вы предложили, я буду использовать Devise с 3 разными контроллерами.   -  person Przemysław Niekraś    schedule 11.01.2013


Ответы (1)


Я бы рекомендовал создавать разные контроллеры для разных вариантов использования. Не создавайте зависимости разных представлений внутри данных. Таким образом, вы можете использовать данные для других вариантов использования или других групп пользователей, не изменяя их напрямую.

Просто создайте контроллеры для различных вариантов использования. Таким образом, вы можете изменить их в любое время без изменения модели данных.

person Fa11enAngel    schedule 12.01.2013