我正在使用rails方法,我需要创建资源的副本。我正在使用dup。
现在我正在使用save方法保存新副本并将其保存在迭代中:
(User.leads2deals.emails - [@old_inquiry.to_email]).each do |dealer|
@inquiry = @old_inquiry.dup
@inquiry.to_email = dealer
@inquiry.senttoall = true
if !@inquiry.save
all_saved = false
end
end
根据all_saved布尔标志,我正在向用户发送正确的消息,如下所示:
if all_saved
@old_inquiry.senttoall = true
@old_inquiry.save
respond_to do |format|
format.html {redirect_to @parent, notice: 'All Leads were successfuly sent!'}
end
else
respond_to do |format|
format.html {redirect_to @parent, notice: 'There was some problems sending all the leads! Try sending one by one'}
end
end
我的问题是我想使用批量创建。使用数组,构建对象,最后在对象的数组上调用create以提高效率。
但我想检查任何对象的创建是否失败,在这种情况下,我会将我的布尔标志更改为false,并向用户发出通知,并非所有查询都已保存。
我检查了创建或创建!不返回true / false。在这种情况下,如何检查是否已成功创建所有对象?
答案 0 :(得分:3)
You can do:
result = Model.create(array)
Then to check if everything was created successfully,
if result.all?(&:persisted?)
# successful action
else
# failed action
end
答案 1 :(得分:0)
尝试使用activerecord-import。它支持验证。您需要做的就是检查验证失败时返回的内容,并根据该内容构建响应。