我有一个群组模型和一个用户模型。这是一种m到n的关系。组和用户模型通过单独的成员模型连接。
属于某个组的某些用户子集是管理员。当新用户尝试通过创建新成员资格来加入组时,我希望在新用户实际参与该组之前,其中一个组管理员可以确认此操作。
实现这一目标的最佳方法是什么?我目前的想法是拥有一个名为权限或邀请的单独模型,只有组管理员才能创建。当用户属于成员资格和邀请时,他们只是该成员的成员。对于相当普通的任务来说,这似乎是很多模型。如果这实际上是最好的方法,那么关于如何去做的一些建议将非常感激。
我不想使用电子邮件进行确认。
我正在使用Rails 3.1.0。
答案 0 :(得分:0)
为什么不在连接模型中包含确认状态?因此,假设您有一个用户,一个组模型,并且他们通过成员模型加入。将具有格式DateTime的属性“accepted_on”添加到成员资格模型(或者如果您不关心它们何时被接受,则只是一个布尔值。)然后创建一个视图,列出仅对管理员可见的所有成员资格,其中包含链接只有他们可以访问将“accepted_on”属性设置为Time.current
。
在您的用户/群组模型中,您可以执行以下操作:
class User < ActiveRecord::Base
has_many :memberships, :conditions => 'accepted_on IS NOT NULL'
has_many :groups, :through => :memberships
end
class Group < ActiveRecord::Base
has_many :memberships, :conditions => 'accepted_on IS NOT NULL'
has_many :users, :through => :memberships
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
这样,当新用户添加成员资格时,在管理员接受了他之前它将无法使用(即,除了nil以外的其他任何内容都被接受。)