Ruby on rails 3 &引用;“家长”;及;“儿童”;Mongoid和Desive的用户

Ruby on rails 3 &引用;“家长”;及;“儿童”;Mongoid和Desive的用户,ruby-on-rails-3,mongodb,ruby-on-rails-3.1,devise,mongoid,Ruby On Rails 3,Mongodb,Ruby On Rails 3.1,Devise,Mongoid,首先,祝大家圣诞快乐!我一直想做的事情(理论上)非常简单。我有一个Desive认证系统,它运行Mongoid,因为它是ODM。我想做的是将某些用户与另一个用户关联,其中一个用户是其他“子”用户的“父”。想想家长控制——有一位家长拥有一个帐户,然后他们的所有孩子都与家长帐户关联。然后,家长账户有一个特殊的“家长”角色,赋予他们对子女的家长控制权(或管理权)。这里的概念相同,只是我试图在Desive中将Mongoid作为ODM来模仿。Can稍后将用于授权 我想到的第一个解决方案是在父帐户中嵌入子帐户

首先,祝大家圣诞快乐!我一直想做的事情(理论上)非常简单。我有一个Desive认证系统,它运行Mongoid,因为它是ODM。我想做的是将某些用户与另一个用户关联,其中一个用户是其他“子”用户的“父”。想想家长控制——有一位家长拥有一个帐户,然后他们的所有孩子都与家长帐户关联。然后,家长账户有一个特殊的“家长”角色,赋予他们对子女的家长控制权(或管理权)。这里的概念相同,只是我试图在Desive中将Mongoid作为ODM来模仿。Can稍后将用于授权

我想到的第一个解决方案是在父帐户中嵌入子帐户。我不想用嵌入来解决这个问题,因为我看不到它的好处。如果有人能告诉我通过嵌入解决这个问题的好处,请这样做。我在考虑用像has-many:users这样的东西来代替。这可能成为一个问题的地方是,一个用户在Desive+Mongoid中是否真的有很多用户

我想做的另一件事是让家长和学生模型继承用户模型(其中包含Desive)。考虑到我继承了Desive模型,我不知道这是否适用于Desive 1.x(以及未来的Desive 2.x)。如果你以前试过,请告诉我你的经历

这么冗长的解释结束后,你的想法呢

-罗伯特

使用Rails 3.1.x、Desive 1.5.x和Mongoid 2.3.x您可以使用STI(单表继承),它可以提供一个单独的层来区分两类用户

您可以按以下方式进行操作(基于ActiveRecord的解释..您可以根据需要更改):

class用户
为此,您必须在用户模型中添加一个
类型

因此,无论何时您想要创建一个
父用户
,您都可以这样做
parent\u user=ParentUser.create()

以及创建子用户

child\u user=ChildUser.create()

更详细的博客文章在这里


您也可以在此处引用此问题

您真的需要使用Desive吗?使用rails 3.1+进行身份验证真的很容易,如果你不想把它塞进Desive中,你可以构建对你来说最有意义的模型。Tyler你的想法和我的想法是一致的!在花了一整天的时间设计我的web应用程序中更复杂的部分(感谢上帝提供了流程图)之后,我意识到Desive对于这个应用程序来说太狭窄了!我现在就要从头开始角色认证了!好的,太好了!这并不意味着你的问题不应该被回答,而且我对Desive不够熟悉,无法提供帮助,很抱歉。不过祝你好运。别难过,我相信社区中会有人来为后代回答这个问题。我最终偶然发现了这种类型的选项,但从来没有时间实现我在问题中讨论的功能。谢谢你回答这个问题,因为它告诉我我没有疯,STI是一个可行的选择。再次感谢。
class User < ActiveRecord::Base
end

class ParentUser < User
end

class ChildUser < User
end