【问题标题】:Use devise_invitable to send invitation upon creating new model record在创建新模型记录时使用 devise_invitable 发送邀请
【发布时间】:2016-05-11 08:53:11
【问题描述】:

非技术背景

我正在使用一个为不同公司管理数据的应用。对于这种情况,我有两个模型UserCompany。通常,我们甚至在用户拥有帐户之前就为他们建立了一家公司,然后我们创建用户并通过一些笨拙的方式(例如电话)将登录信息提供给适当的一方。我们想在创建新公司时向用户发送邀请。

技术资料

我们正在使用 devise 进行用户管理,最近遇到了一个 great little gem called devise_invitable.,它通过 devise 的邮件发送邀请。

问题

虽然 devise_invitable 非常适合简单地邀请用户,但我不知道如何让它使用除 invitations_controller 之外的控制器(如 companies_controller)发送邀请。 我的关键挂断是,邀请功能似乎要求我们要么通过invitations_controller 及其各自的视图,要么使用它的User.invite! 方法。两者都创建用户并发送邀请。这意味着如果我添加 User.invite!如下图的create方法,我复制用户。

我的问题

如何在companies_controller 内创建新公司并邀请新用户?我一直在使用以下方法创建用户(只是不邀请他们)。如果有人知道我应该如何更改它们以使用邀请功能,我将不胜感激。

来自companies_controller

def new
    @company=Company.new
    @user=@company.user_companies.build.build_user
    @folder=@company.folders.build
    @stock=@company.stocks.build
    @stock.security_class="Common"
    @stock.security_series=""
end

def create
    @company = Company.new(company_params)
    if @company.save
        redirect_to users_admin_path(@user), notice: "User successfuly created!"
    else
        redirect_to welcome_index_path
    end
end

无论如何,感谢您的任何想法!

【问题讨论】:

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


    【解决方案1】:

    好的,想通了(或者至少想出了一条出路)。基本上我在Company 模型中创建了一组虚拟变量,如下所示:

    attr_accessor :user_email, :user_fname, :user_lname
    

    然后我更新控制器如下

    def new
        @company=Company.new
        @folder=@company.folders.build
        @stock=@company.stocks.build
        @stock.security_class="Common"
        @stock.security_series=""
    end
    
    def create
        @company = Company.new(company_params)
        if @company.save
            invitedUser=User.invite!(email: company_params[:user_email], fname: company_params[:user_fname], lname: company_params[:user_lname], invited_by: current_user)
            if invitedUser.save
                UserCompany.create(user: invitedUser, company: @company, company_role: "Owner")
                redirect_to companies_path, notice: "User successfuly created!"
            end
        else
            redirect_to welcome_index_path
        end
    end
    

    主要亮点是

    1. 删除@user=@company.user_companies.build.build_user,因为我不想构建用户,我希望它由invite! 方法创建。
    2. 使用User.invite!创建用户并从提交的表单参数中获取必要的数据
    3. 手动添加连接记录(因为我在CompanyUser 之间存在多对多关系)。

    原来如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多