[{"sort_by"=>"id", "temp-6ren">
gpt4 book ai didi

ruby-on-rails - 如何使用 rails 中的 create 方法创建多个记录并处理验证?

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:43 25 4
gpt4 key购买 nike

我想一次创建多条记录,但如果有任何记录由于任何验证错误而未创建,那么它应该以某种方式处理该错误。

参数

  Parameters: {"group"=>[{"sort_by"=>"id", "template_ids"=>[182], "name"=>"Csdfwses", "count"=>1}, {"sort_by"=>"id", "template_ids"=>[181], "name"=>"rthydrt", "count"=>1}]}

所以我的 Controller 的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.select(&:invalid?).map{ |g| g.errors.full_messages }.join("<br/>")
render_422 @groups, "Could not save groups. Here are the errors: #{errors}"
end
end

您会希望更好地格式化错误,但这是一个简单的示例。

关于ruby-on-rails - 如何使用 rails 中的 create 方法创建多个记录并处理验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37334198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com