2013-08-31 176 views
0

我有以下型號的模型觀察:創建創建一個關聯的模型關係

User (id,email,name) 
Group (id,domain) 
GroupUser (id, group_id, user_id) 

我想這樣做是任何時候用戶創建。找到用戶的電子郵件域並自動創建組和加入GroupUser記錄。

執行後:

u = User.new 
u.email = '[email protected]' 
u.name = "my name" 

什麼是用戶模型/觀察者以正確的方式來做到這一點?

感謝

回答

0

您應該創建一個UserObserver rails g observer UserObserver並定義一個動作:

def after_create(user) 
    domain = user.email.split("@").last 
    if (group = Group.where(domain: domain)).any? 
     GroupUser.create(group.id, user.id) 
    else 
     group = Group.create(domain) 
     GroupUser.create(group.id, user.id) 
    end 
end 

我想這可能是有益的。

更新: 對不起,代碼有問題。修復。