1

グループモデルとユーザーモデルがあります。これはmとnの関係です。グループモデルとユーザーモデルは、個別のメンバーシップモデルを介して結合されます。

グループに属するユーザーの一部は管理者です。新しいユーザーが新しいメンバーシップを作成してグループに参加しようとした場合、新しいユーザーが実際にグループに参加する前に、このアクションをグループ管理者の1人に確認してもらいたいと思います。

これを達成するための最良の方法は何ですか?私の現在の考えは、グループ管理者だけが作成できる許可または招待と呼ばれる別のモデルを持つことです。ユーザーは、メンバーシップと招待状の両方の一部である場合にのみ、グループのメンバーになります。これは、かなりありふれたタスクの多くのモデルのようです。これが実際に最善のアプローチである場合、それを実行する方法についてのアドバイスをいただければ幸いです。

確認のためにメールを使いたくありません。

Rails3.1.0を使用しています。

4

1 に答える 1

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以外でaccepted_onにされるまで)利用可能になりません。

于 2012-09-16T18:44:07.903 に答える