我有gem devise
和gem apartment
我想用它来为每个用户创建单独的架构。我正在寻找一种在用户sign_up时调用Apartment::Database.create(current_user)
的好方法。
我在devise的registrations_controller.rb中找到了这个:
# Signs in a user on sign up. You can overwrite this method in your own
# RegistrationsController.
def sign_up(resource_name, resource)
sign_in(resource_name, resource)
end
但我不确定应该怎么做。 我想它可能与application_controller.rb类似:
def sign_up(user)
super user
Apartment::Database.create(current_user.username)
end
我写这篇文章看this sign_in override example,但我有一些顾虑:
关于user
参数,因为超级函数使用不同的参数(resource_name, resource
)。
我希望仅在用户成功注册时才致电Apartment::Database.create
。
我不确定,但我认为user
可以在这里使用,而不是current_user
方法(假设它用于注册新用户)。
将用户模型的创建调用作为after_create
挂钩怎么办?这是个好主意吗?
那样model/User.rb
after_create :create_schema
private
def create_schema
Apartment::Database.create(self.username)
end
上面的代码接缝工作正常,但我不确定这是否是正确的方式,我想请你评论覆盖问题,即使它是。
提前感谢您的帮助。