我想一次创建多个记录,但是如果有任何记录由于验证错误而没有创建,那么它应该以某种方式处理该错误。
**参数 *
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
但我在寻找更干净的方法,如果有的话?
2条答案
按热度按时间6ovsh4lw1#
您希望将一个散列数组传递给
model.create
,以便一次创建多个记录。如果您想显示任何验证错误,那么您将需要查看
model.errors
,或者查看model.errors.full_messages
中的错误数组。您可能希望更好地格式化错误,但这只是一个简单的示例。
bvjxkvbb2#
通常使用
accepts_nested_attributes
-但这需要某种层次关系:那么,如果没有父模型,您将如何做到这一点呢?创建一个行为类似于父关联的模型:
x一个一个一个一个x一个一个二个x