Ruby on rails 具有强参数的Rails多对多
我有一个叫做服务请求的模型,Ruby on rails 具有强参数的Rails多对多,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我有一个叫做服务请求的模型,属于:unit和属于:user 用户和单元模型都是使用设置的,有许多:服务请求 还有另一个称为租户的模型,其中必须存在一个用户才能允许创建服务请求。因此,我正在查找当前_用户的电子邮件,看看他们是否在租户表中 因此,service_requests表是一个连接表,它有一个用户外键和一个单元的第二个外键,以及仅针对服务请求本身的附加列 问题是,我需要保存3件事:用户、单元,以及传递给服务请求列的任何内容。目前,我可以保存一个包含用户和单元的服务请求,但我不确定如何为服务
属于:unit
和属于:user
用户和单元模型都是使用设置的,有许多:服务请求
还有另一个称为租户的模型,其中必须存在一个用户才能允许创建服务请求。因此,我正在查找当前_用户的电子邮件,看看他们是否在租户表中
因此,service_requests表是一个连接表,它有一个用户外键和一个单元的第二个外键,以及仅针对服务请求本身的附加列
问题是,我需要保存3件事:用户、单元,以及传递给服务请求列的任何内容。目前,我可以保存一个包含用户和单元的服务请求,但我不确定如何为服务请求以及service\u request\u params
在服务请求控制器中,我有一个创建操作
def create
# check to see that the user exists in the tenant table first
if Tenant.exists?(email: current_user.email)
@tenant ||= Tenant.find_by(email: current_user.email) if current_user
@tenant.unit # find the tenants unit object
# create service_request and pass the user and tenant unit info
@service_request = ServiceRequest.new(unit: @tenant.unit, user: current_user)
respond_to do |format|
if @service_request.save
format.html { redirect_to @service_request, notice: 'Service request successfully created.' }
format.json { render :show, status: :created, location: @service_request }
else
format.html { render :new }
format.json { render json: @service_request.errors, status: :unprocessable_entity }
end
end
else
# [ TODO: handle when the user is not in tenant table]
end
end
private
# Never trust parameters from the scary internet, only allow the white list through.
def service_request_params
params.require(:service_request).permit(:title)
end
好的,我让它工作,不确定这是否是首选的“轨道方式”,如果不是,请让我知道 在创建操作中,我刚刚调用了强参数,然后使用.merge添加额外的单元和用户数据
@service_request = ServiceRequest.new(service_request_params.merge(unit: @tenant.unit, user: current_user))
您还可以执行
@service\u request.unit=@tentant.unit
和@service\u request.user=current\u user
。