Ruby on rails Rails-保存模型时有无引发错误
Im写入方法,其中用户将布尔值设置为在记录上运行保存,无论是否引发错误Ruby on rails Rails-保存模型时有无引发错误,ruby-on-rails,ruby,Ruby On Rails,Ruby,Im写入方法,其中用户将布尔值设置为在记录上运行保存,无论是否引发错误 Record.all.each do |record| if raise_bool.true? # save the record with raise error else # save the record no raise error end end 但我不确定如何实现,任何帮助都将不胜感激。您可以使用“保存”来引发错误!或者,可以使用“保存”将错误作为布尔值返回 通常,您总是希望使用sa
Record.all.each do |record|
if raise_bool.true?
# save the record with raise error
else
# save the record no raise error
end
end
但我不确定如何实现,任何帮助都将不胜感激。您可以使用“保存”来引发错误!或者,可以使用“保存”将错误作为布尔值返回
通常,您总是希望使用save!如果您认为您不想使用save!你可能应该重新考虑你在做什么。消除代码中的错误,特别是与数据直接相关的错误,总是会导致应用程序出现问题
代码中还存在一个问题,即在记录的每次迭代中计算布尔值。您可以使用procs做一件很酷的事情,以确定在迭代之外调用什么:
method_save = raise_bool == true? ? proc { |x| x.save! } : proc { |x| x.save }
然后在循环内部:
method_save.call(record)
这并不能完全回答您的问题,但让我建议一种与Rails方式更一致的类似方法。验证失败时可能会引发错误。因此,考虑验证条件: 类MyModel<应用程序记录 属性访问器:用户拒绝验证 验证:name,presence:true,除非:user\u拒绝\u验证? 终止 那你就可以了 MyModel.newuser\u拒绝\u验证?:false,名称:nil MyModel.newuser\u拒绝\u验证?:true,名称:“Norm”
你真的是指引发错误还是跳过验证。如果保存验证失败,则不会进行插入/更新,但不会引发错误。我假设您正在寻找前者,它允许用户真正保存一条其他方面无效的记录。