我正在使用管理不同公司数据的应用。出于这种情况的目的,我有两个模型User
和Company
。我们通常会在用户创建公司之前为他们设立公司,然后我们创建用户并通过电话等一些笨重手段将登录信息提供给相应的参与方。我们希望在创建新公司时向用户发送邀请。
我们正在使用设计用于我们的用户管理,最近遇到了great little gem called devise_invitable.,它通过设计邮件发送邀请。
虽然devise_invitable非常适合简单地邀请用户,但我无法弄清楚如何使用除companies_controller
以外的控制器(如invitations_controller
)发送邀请。 我的密钥挂断,可邀功能似乎要求我们通过invitations_controller
及其各自的视图或使用其User.invite!
方法。两者都创建用户并发送邀请。这意味着如果我添加User.invite!如下所示,我将复制用户。
如何在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
无论如何,感谢任何想法!
答案 0 :(得分: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
@user=@company.user_companies.build.build_user
,因为我不想构建用户,我希望它由invite!
方法创建。User.invite!
创建用户并从提交的表单参数中获取必要的数据Company
和User
之间存在多对多关系。)真的。