gpt4 book ai didi

ruby-on-rails - 如果出现错误,不要停止 rake 任务

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:12 27 4
gpt4 key购买 nike

我有简单的 rake 文件。它将数据从 .xls 文件导入到数据库中。但是有些数据是无效的。然后数据无效 rake 停止执行脚本。但我想跳过这一行并尝试下一行。

我的部分代码:

data.each do |row|

username = row[0].slice!(0..2) + row[1].slice!(0..2) + rand(100).to_s
username.downcase
password = "pass1234"
User.create!(
email: row[2].downcase,
username: username,
first_name: row[0],
last_name: row[1],
expiration_date: row[3],
password: password,
password_confirmation: password)
p 'done'

结束

错误与验证有关,例如:

rake aborted!
ActiveRecord::RecordInvalid: Validation failed: Expiration date must be after 2015-10-27

脚本已停止且未添加有效记录。

最佳答案

将其包裹在开始/救援 block 中。

data.each do |row|
begin
username = row[0].slice!(0..2) + row[1].slice!(0..2) + rand(100).to_s
username.downcase
password = "pass1234"
User.create!(
email: row[2].downcase,
username: username,
first_name: row[0],
last_name: row[1],
expiration_date: row[3],
password: password,
password_confirmation: password)
p 'done'
rescue => e
# log exception or ignore it.
end
end

请注意,这是有效的,因为默认救援是针对 StandardError 的。由于 ActiveRecord::RecordInvalid < StandardError。它将被“捕获”。

如果您只想对这些特定错误执行某些操作,则可以先修复特定错误。

(有关引用,另请参阅 API:http://ruby-doc.org/core-2.2.0/Exception.html)

关于ruby-on-rails - 如果出现错误,不要停止 rake 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33376760/

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