首先,祝圣诞快乐!我一直想做的事情很简单(理论上)。我有一个与Mongoid一起运行的Devise身份验证系统,因为它是ODM。我想要做的是将某些用户与另一个用户关联,其中一个用户是其他“子”用户的“父”。想想父母控制 - 有一个父母有一个帐户,然后他们所有的孩子都与父帐户相关联。然后,父帐户具有特殊的“父”角色,该角色赋予他们对其子女的父母控制权(或管理权)。同样的概念在这里我只是试图在设计中使用Mongoid作为ODM来模拟这个。 Can Can将在以后用于授权。
我想到的第一个解决方案是将孩子嵌入父帐户。我不想用嵌入来解决这个问题,因为我没有看到它的好处。 如果有人可以通过嵌入来解决这个问题的好处,请做。我正在考虑使用类似has_many :users
的东西。如果这可能成为一个问题,用户真的可以在Devise + Mongoid中拥有很多用户吗?
我正在考虑的另一件事是让父模型和学生模型继承自User模型(包含Devise的模型)。考虑到我将继承Devise模型,我不知道这是否适用于Devise 1.x(以及将来的2.x)。 如果你之前尝试过,请告诉我你的经历。
做了那个冗长的解释,你的想法?
-Robert
使用Rails 3.1.x,Devise 1.5.x和Mongoid 2.3.x
答案 0 :(得分:1)
您可以使用STI(单表继承),它可以提供单独的图层来区分用户的两个图标。
您可以按照以下方式执行此操作(根据ActiveRecord进行说明..您可以根据需要进行解释):
class User < ActiveRecord::Base
end
class ParentUser < User
end
class ChildUser < User
end
为此,您必须在用户模型中添加type
列。
因此,无论何时您想创建ParentUser
,都可以
parent_user = ParentUser.create()
以及创建子用户
child_user = ChildUser.create()