Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:邀请您注册成为Desive gem的好友_Ruby On Rails_Devise - Fatal编程技术网

Ruby on rails Rails:邀请您注册成为Desive gem的好友

Ruby on rails Rails:邀请您注册成为Desive gem的好友,ruby-on-rails,devise,Ruby On Rails,Devise,我正在Rails应用程序中使用Desive。我希望用户可以给他们的朋友一个链接,并通过该链接,他们可以注册,然后成为他们的邀请者的朋友 这是我想到的 首先,我给每个用户一个唯一的代码,如dbgadf34t42a,人们可以访问url,如localhost/signup?invite_code=dbgadf34t42a。然后定制Deviate的注册控制器,使用此代码找到邀请者,然后创建友谊关系 代码应该是这样的 def create #Create user account, and t

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

这是我想到的

首先,我给每个用户一个唯一的代码,如
dbgadf34t42a
,人们可以访问url,如
localhost/signup?invite_code=dbgadf34t42a
。然后定制Deviate的
注册控制器
,使用此代码找到邀请者,然后创建
友谊
关系

代码应该是这样的

  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
我在想

  • 如果有更好的方法,可以使用gems或code
  • 我在customize Deviate的
    注册控制器
    上没有找到好的资源,我可以将逻辑提取到另一个地方,存储邀请代码,然后继续创建
    友谊
    模型吗
  • 也许是这样的:

      def after_sign_up
        if params[:invite_code]
          redirect_to new_friendship_path
        else
          # default_behavior
        end
      end
    
  • 如果有更好的方法,可以使用gems或code
  • 你可以用gem。为了友谊,你可以定制这款宝石

  • 我在CustomizeDeviate的注册控制器上没有找到好的资源,我可以将逻辑提取到另一个地方,存储邀请代码,然后继续创建友谊模型吗
  • 要定制Deviate注册,您需要继承Deviate::RegistrationController

    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"}