与Devise和Apartment签署的sign_up钩子

时间:2014-05-19 05:14:50

标签: ruby-on-rails devise multi-tenant

我有gem devisegem 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,但我有一些顾虑:

  1. 关于user参数,因为超级函数使用不同的参数(resource_name, resource)。

  2. 我希望仅在用户成功注册时才致电Apartment::Database.create

  3. 我不确定,但我认为user可以在这里使用,而不是current_user方法(假设它用于注册新用户)。

  4. 将用户模型的创建调用作为after_create挂钩怎么办?这是个好主意吗?

  5. 那样model/User.rb

      after_create :create_schema
    
      private
    
      def create_schema    
        Apartment::Database.create(self.username)
      end  
    

    上面的代码接缝工作正常,但我不确定这是否是正确的方式,我想请你评论覆盖问题,即使它是。

    提前感谢您的帮助。

0 个答案:

没有答案