Rails Одиночное табличное наследование (STI) с моделью User - PullRequest
1 голос
/ 07 января 2012

Создание небольшого сайта бронирования.Есть users (которые входят в систему и работают с сайтом), и есть guests, которым назначается rooms.users может быть (есть?) guests, но не все guests также users.

Первоначально я хотел установить отношения belongs_to / has_one между user и guest, но, может быть, STI сработает здесь?Поскольку пользователи и гости имеют first_name, last_name, email и т. Д., Имеет ли смысл настроить модель таким образом, чтобы, скажем, user и guest оба наследовали от person?

Я проведу свою собственную упрощенную аутентификацию, поэтому единственные дополнительные поля user, вероятно, будут иметь password_digest, roles_mask и icon_color.

Есть предложения?Я спрашиваю только потому, что с аутентификацией, авторизацией и еще чем-то может быть сложно.

Цените любые идеи / советы!

1 Ответ

0 голосов
/ 07 января 2012

Самый простой подход здесь, как и предполагалось, придерживаться ИППП. Вы можете, например, настроить одну модель devise User, а также применить ACL с CanCan и определить роли для своих пользователей.

Спецификация способностей

CanCan будет определять, какие ресурсы доступны, а какие нет. Преимущество здесь в том, что пользователи могут быть гостями, и в зависимости от того, как вы настраиваете свой ACL, гости могут быть лишены возможности доступа admin.

Тем не менее, предложение Джесси использовать две отдельные модели Devise также является хорошей идеей, поскольку это гарантирует, что их сеансы разделены. Это проще реализовать, так как вы можете настроить ACL для конкретного пользователя и ACL для гостя соответственно.

https://github.com/ryanb/cancan

...