ruby-on-rails - 如何通过 devise_invitable 邀请现有用户

标签 ruby-on-rails ruby devise devise-invitable

我实现了

gem 'devise_invitable' 

对于模型 User,我在邀请现有用户时遇到问题。错误显示 “USER IS ALREADY REGISTERED”。我想在另一个 User 邀请列表中添加相同的用户。如何做到这一点?

最佳答案

对于那些寻找相同问题的不同实现的人,您可以将新行为添加到 InvitationsController protected 方法 invite_resource

可以在 DeviseInvitable 上找到对下面示例的更详细的解释。维基页面,标题为 Invite a Resource (or User) that Has Already Signed Up without Invitation .

class Users::InvitationsController < Devise::InvitationsController

  protected

  # invite_resource is called when creating invitation
  # should return an instance of resource class

  # this is devise_invitable's implementation
  # def invite_resource(&block)
  #   resource_class.invite!(invite_params, current_inviter, &block)
  # end

  def invite_resource(&block)
    @user = User.find_by(email: invite_params[:email])
    # @user is an instance or nil
    if @user && @user.email != current_user.email
      # invite! instance method returns a Mail::Message instance
      @user.invite!(current_user)
      # return the user instance to match expected return type
      @user
    else
      # invite! class method returns invitable var, which is a User instance
      resource_class.invite!(invite_params, current_inviter, &block)
    end
  end
end

关于ruby-on-rails - 如何通过 devise_invitable 邀请现有用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15470622/

相关文章:

ruby-on-rails - 为 Ruby on Rails 项目生成 emacs 标签文件

ruby-on-rails - 缩短 .each do 循环

css - Sass::SyntaxError 在@import "bootstrap"in application.css.scss 之后

ruby-on-rails - 如何扩展 Ruby Test::Unit 断言以包含 assert_false?

ruby-on-rails - Heroku Deploy - Gem::Installer::ExtensionBuildError: 错误:无法构建 gem native 扩展

devise - 如何为编辑操作指定 devise_parameter_sanitizer?

ruby-on-rails - RoR linkedin gem & OAuth::问题(signature_invalid)

ruby-on-rails - 可以在 `table_name_prefix` 中指定架构吗?

ruby-on-rails - URL 参数被转换为看似乱码的字符

ruby-on-rails - Disqus SSO + RAILS 设计 gem