2012-09-16 33 views
1

我有團體模型和用戶模型。這是一個m到n的關係。組和用戶模型通過單獨的成員資格模型進行連接。團體成員需要團體管理員的確認

屬於某個組的用戶的一些子集是管理員。當新用戶嘗試通過創建新成員資格加入某個組時,我希望在新用戶可以真正加入該組之前,由其中一個組管理員確認此操作。

完成此操作的最佳方法是什麼?我目前的想法是有一個單獨的模型,稱爲只有組管理員才能創建的權限或邀請。當用戶成爲會員和邀請的一部分時,他只是該組的成員。這似乎是一個相當普通的任務很多模型。如果這實際上是最好的方法,那麼有關如何去做的建議將不勝感激。

我不想使用電子郵件進行確認。

我正在使用Rails 3.1.0。

回答

0

爲什麼不在連接模型本身中包含確認狀態?因此,讓我們假設您有一個用戶,一個組模型,並且它們由一個成員資格模型加入。添加一個格式爲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 

這樣,當一個新的用戶添加的成員不會成爲可用,直到管理員已經接受了他(即,由accepted_on除零以外的任何內容)。