«Родительский» и «Детский» пользователи с Mongoid и Devise - PullRequest
0 голосов
/ 25 декабря 2011

Прежде всего, с Рождеством всех! То, что я пытался сделать, очень просто (теоретически). У меня есть система аутентификации Devise, которая работает с Mongoid, так как это ODM. Я хочу связать определенных пользователей с другим пользователем, где один пользователь является «родителем» других «дочерних» пользователей. Подумайте, родительский контроль - есть один родитель, который имеет учетную запись, а затем все их дети связаны с родительской учетной записью. В этом случае родительский аккаунт имеет специальную «родительскую» роль, которая дает им родительский контроль (или административные права) над своими детьми. Та же концепция здесь только я пытаюсь подражать этому в Devise с Mongoid в качестве ODM. Can Can будет использован позже для авторизации.

Первым решением, о котором я подумал, было встроить детей в родительский аккаунт. Я не хочу решать это с помощью встраивания, так как не вижу выгоды. Если кто-то мог бы просветить меня относительно пользы решения этого вопроса с помощью встраивания, пожалуйста, сделайте. Я думал о том, чтобы вместо этого было что-то вроде has_many :users. Где это может стать проблемой, может ли пользователь иметь много пользователей в Devise + Mongoid?

Еще одна вещь, о которой я думал, - это модели Parent и Student, наследуемые от модели User (той, в которой есть Devise). Я не знал, сработает ли это с Devise 1.x (и 2.x в будущем), учитывая, что я буду наследовать от модели Devise. Если вы уже пробовали это раньше, пожалуйста, дайте мне знать о вашем опыте.

С этим многословным объяснением, вашими мыслями?

-Роберт

Использование Rails 3.1.x, Devise 1.5.x и Mongoid 2.3.x

1 Ответ

1 голос
/ 07 марта 2012

Вы можете использовать STI (Single Table Inheritance), который может дать отдельный слой для разграничения двух категорий пользователей.

Вы можете сделать это, как показано ниже (объяснение на основе ActiveRecord .. вы можетеcgange как и когда требуется):

class User < ActiveRecord::Base
end

class ParentUser < User
end

class ChildUser < User
end

Для этого вам нужно будет добавить столбец type в модели User.

Поэтому, когда вы хотите создать ParentUser, выможет сделать parent_user = ParentUser.create()

и для создания дочерних пользователей

child_user = ChildUser.create()

более подробный пост в блоге здесь http://rohitsharma9889.wordpress.com/2010/11/29/implement-sti-single-table-inheritance-in-your-rails-models/

Вы также можете сослаться на этовопрос здесь Rails разработают регистрационную форму при наличии STI

...