繁体   English   中英

Rails:邀请以devise gem身份注册为朋友

[英]Rails: invite to sign up as friend with devise gem

我在Rails应用程序中使用devise。 我希望用户可以给他们的朋友一个链接,并通过该链接可以注册并与邀请者成为朋友。

这是我想出的。

首先,我给每个用户一个唯一的代码,例如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模型吗?

也许像这样:

  def after_sign_up
    if params[:invite_code]
      redirect_to new_friendship_path
    else
      # default_behavior
    end
  end
  1. 如果有更好的方法,可以使用宝石或代码。

您可以使用可邀请设计的 gem。 为了建立友谊,您可以自定义此宝石。

  1. 我在自定义Devise的Signup Controller上找不到很好的资源,可以将逻辑提取到另一个地方,存储邀请代码,然后继续创建友谊模型吗?

要定制Devise Signup,您需要继承Devise :: RegistrationsController

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

然后告诉devise使用该控制器代替默认控制器:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM