我有以下型号:
User (id,email,name)
Group (id,domain)
GroupUser (id, group_id, user_id)
我想做的是随时创建用户。找到用户的电子邮件域并自动创建 Group 和加入 GroupUser 记录。
执行后:
u = User.new
u.email = 'bob@ge.com'
u.name = "my name"
用户模型/观察者实现这一目标的正确方法是什么?
谢谢
我有以下型号:
User (id,email,name)
Group (id,domain)
GroupUser (id, group_id, user_id)
我想做的是随时创建用户。找到用户的电子邮件域并自动创建 Group 和加入 GroupUser 记录。
执行后:
u = User.new
u.email = 'bob@ge.com'
u.name = "my name"
用户模型/观察者实现这一目标的正确方法是什么?
谢谢
您应该创建一个 UserObserverrails 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
我认为这可能会有所帮助。
更新: 对不起,代码有问题。解决它。