0

我将 devise_invitable 与 Rails 一起使用,需要一些帮助。我想让用户在接受邀请后登录。这是我的邀请控制器

class InvitationsController < Devise::InvitationsController
  def update
    if User.accept_invitation!(user_params)
      # log in user here
      redirect_to dashboard_show_path, notice: t('invitaion.accepted')
    else
      redirect_to root_path, error: t('invitation.not_accepted')
    end
  end

  private
  def user_params
    params.require(:user).permit(:invitation_token, :password, :password_confirmation)
  end
end

您可以在代码中看到注释

# log in user here

在这里,我想登录接受邀请的用户。

谢谢。

4

1 回答 1

1

您正在寻找的方法是sign_in,试试这个:

def update
  if User.accept_invitation!(user_params)
    sign_in(params[:user])
    redirect_to dashboard_show_path, notice: t('invitaion.accepted')
  else
    redirect_to root_path, error: t('invitation.not_accepted')
  end
end

但是我应该注意,默认情况下,devise_invitable 会在用户接受邀请后登录用户。请参阅此处的默认更新操作,如果您希望使用默认功能,只需调用该super方法或根本不实现更新操作。

于 2013-02-06T17:51:43.310 回答