2013-08-31 38 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 

我想这可能是有益的。

更新: 对不起,代码有问题。修复。