1

我有一个组模型和一个用户模型。这是一个 m 对 n 的关系。组和用户模型通过单独的成员模型连接。

属于某个组的某些用户子集是管理员。当新用户尝试通过创建新成员资格来加入群组时,我希望在新用户实际参与群组之前,由其中一位群组管理员确认此操作。

实现这一目标的最佳方法是什么?我目前的想法是有一个单独的模型,称为权限或邀请,只有组管理员可以创建。当用户同时是成员资格和邀请的一部分时,他们才是组的成员。这似乎是一个相当普通的任务的很多模型。如果这实际上是最好的方法,那么一些关于如何去做的建议将不胜感激。

我不想使用电子邮件进行确认。

我正在使用 Rails 3.1.0。

4

1 回答 1

0

为什么不在连接模型本身中包含确认状态?因此,让我们假设您有一个 User、一个 Group 模型,并且它们由 Membership 模型连接。将格式为 DateTime 的属性“accepted_on”添加到 Membership 模型(或者如果您不关心它们何时被接受,则只是一个布尔值。)然后创建一个视图,列出仅对管理员可见的所有成员资格,并带有一个链接只有他们可以访问将“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

这样,当一个新用户添加一个成员时,它在管理员接受他之前不会变为可用(也就是说,将 accept_on 设置为 nil 以外的任何内容。)

于 2012-09-16T18:44:07.903 回答