我正在将参数中的属性数组发送到控制器,并且如果在创建记录时出现任何错误,我需要处理验证错误。
因为我需要一次创建多个组。
参数
Parameters: {"group"=>[{"sort_by"=>"id", "template_ids"=>[182], "name"=>"Csdfwses", "count"=>1}, {"sort_by"=>"id", "template_ids"=>[181], "name"=>"rthydrt", "count"=>1}]}
所以我的控制器的create
方法是这样的:
def create
@groups = Group.create group_params
if @groups
render json: { success: true, message: "#{@groups.length} groups created" }
else
render_422 @groups, 'Could not save groups.'
end
end
我想处理在创建任何记录时发生任何错误的情况,以便在创建后应显示错误消息。
使用上述方法,error
此处无法使用方法。如何显示错误消息?
我尝试使用begin-rescue:
def create
begin
@groups = Group.create! group_params
if @groups
render json: { success: true, message: "#{@groups.length} groups created" }
else
render_422 @groups, 'Could not save groups.'
end
rescue ActiveRecord::RecordInvalid => invalid
render json: { success: false, message: "#{invalid.record.errors.messages}" }, status: 500
end
end
但是我正在寻找更清洁的方法,如果有的话?
您想要传递一个哈希数组model.create
以一次创建多个记录。
def create
@groups = Group.create group_params
if @groups.all? { |group| group.persisted? }
render json: { success: true, message: "#{@groups.length} groups created" }
else
render_422 @groups, 'Could not save groups.'
end
end
如果要显示任何验证错误,则需要查找model.errors
或查找一系列不错的错误model.errors.full_messages
。
def create
@groups = Group.create group_params
if @groups.all? { |group| group.persisted? }
render json: { success: true, message: "#{@groups.length} groups created" }
else
errors = @groups.map { |group| group.errors.full_messages.empty? ? nil : group.errors.full_messages }.compact.join("<br/>") # gross one-liner to show you where the errors live
render_422 @groups, "Could not save groups. Here are the errors: #{errors}"
end
end
您将希望更好地格式化错误,但这是一个简单的示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句