我有一个名为service_request的模型belongs_to :unit
和belongs_to :user
用户和单元模型均设置为has_many :service_requests
还有另一个名为Tenant的模型,用户必须存在才能创建服务请求。所以我查找current_users电子邮件,看看它们是否在Tenant表中。
因此,service_requests表是一个连接表,它具有用户的外键和单元的第二个外键,以及仅针对服务请求本身的附加列。
问题是我需要保存用户,单位以及服务请求列传递的任何内容。目前我可以保存具有用户和单位的服务请求,但我不知道如何传递服务请求的强参数service_request_params
在service_requests控制器中我有一个创建操作
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
答案 0 :(得分:1)
好的我工作了,不确定这是否是首选的“Rails方式”,如果不是,请告诉我。
在创建操作中,我只调用了强大的参数,然后使用.merge添加了额外的单元和用户数据。
@service_request = ServiceRequest.new(service_request_params.merge(unit: @tenant.unit, user: current_user))