Rails:邀请使用设计宝石注册成为朋友

时间:2015-03-21 03:09:50

标签: ruby-on-rails devise

我在我的Rails应用程序中使用了设计。我希望用户可以给他们的朋友一个链接,通过链接,他们可以注册,然后成为他们邀请者的朋友。

这是我想出的。

首先,我为每个用户提供了唯一的代码,例如dbgadf34t42a,人们可以访问localhost/signup?invite_code=dbgadf34t42a之类的网址。然后自定义Devise' sign up controller,使用此代码查找邀请者,然后创建friendship关系。

代码就像

  def create
    #Create user account, and then create Friendship
    invite_code = paramsp[:invite_code]
    if user.save
      inviter = User.find_by_invite_code(invite_code)
      inviter.friendships.create(friend: user)
    end
  end

我想知道

  1. 如果有更好的方法可以做到这一点,宝石或代码。
  2. 我没有在自定义Devise Signup Controller上找到好的资源,我可以将逻辑提取到另一个地方,存储邀请代码,然后继续创建friendship模型吗?
  3. 也许是这样的:

      def after_sign_up
        if params[:invite_code]
          redirect_to new_friendship_path
        else
          # default_behavior
        end
      end
    

1 个答案:

答案 0 :(得分:1)

  
      
  1. 如果有更好的方法可以做到这一点,宝石或代码。
  2.   

您可以使用devise-inviteable gem。对于友谊创建,您可以自定义此宝石。

  
      
  1. 我没有在自定义Devise的注册控制器上找到好的资源,我可以将逻辑提取到另一个地方,存储邀请代码,然后继续创建友谊模型吗?
  2.   

要自定义Devise Signup,您需要继承Devise :: RegistrationsController

class RegistrationsController < Devise::RegistrationsController
   def create
     super
     # Now write your customize code for friendship
   end
end

然后告诉设计使用该控制器而不是默认值:

# app/config/routes.rb
devise_for :users, :controllers => {:registrations => "registrations"}