2009-09-13 4 views
0

Я работаю над новым проектом и по какой-то причине решил создать две отдельные пользовательские модели/контроллеры/сеансы, используя аутологию.Две пользовательские модели или только одна?

Пользователи имеют совершенно разные роли на сайте, но модели в основном одинаковы. Единственное различие - взгляды.

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

Итак, я думаю, мой вопрос в том, есть ли какая-нибудь причина для двух моделей пользователей? Есть ли какие-либо руководства о ролях пользователей с authlogic?

Спасибо!

ответ

3

Поскольку Authlogic ориентирован на аутентификацию, очень легко добавить разрешения на основе ролей. Мы сделали это довольно просто, имея одну модель пользователя, добавив модель ролей, а затем с помощью модели UserRole, которая связывает два, которые позволяют одному пользователю иметь несколько ролей, а также для нескольких пользователей, имеющих ту же роль.

С точки зрения Authlogic, все равно. Это только позволяет узнать, что пользователь аутентифицирован, поэтому любые разрешения, которые вы добавляете поверх этого, являются вашими собственными.

В RoR имеется множество статей, основанных на ролевых разрешениях, поэтому просто Google это, и я уверен, что вы найдете несколько вариантов, которые вам нужны.

Из того, что я нашел, хотя, что он простой в значительной степени поможет вашей жизни :-)

+0

Спасибо, что достаточно, чтобы убедить меня, чтобы держать одну модель. Тем не менее, также существует двухуровневая иерархия, которая была намного проще с двумя моделями. Одна модель has_many другого, которая принадлежит первой. Имея одну модель, я нахожу, что мне нужно немного напугать: через вещи, но через месяц я уверен, что буду пинать себя двумя моделями. –

+0

Вы можете посмотреть, как использовать однонаправленное наследование, если имеет смысл отделить часть бизнес-логики. Например, у вас может быть модель User и модель SpecialUser, которая наследуется от пользователя. Они используют одну и ту же таблицу для данных, но это позволяет отделить часть логики. В любом месте, где вы хотите, вы можете использовать SpecialUser в качестве пользователя для упрощения кода :-) –

 Смежные вопросы

  • Нет связанных вопросов^_^