【发布时间】:2019-08-28 02:34:22
【问题描述】:
我正在从 CSV 文件中获取数据并将它们保存到数据库中。这是简化的代码结构(这是一个 rake 任务):
... loading CSV tools...
car = Car.new
car.tender_load_id = data.element[8]
car.brand = data.element[2]
car.color = 'green'
...
car.build_car_metadata(mbol: help_var[:mbol], ...)
car.first_registration = data.element[21]
car.skip_registration_code_validation = true # for not creating registration_code
if existing_car = Car.where("cars.tender_load_id ILIKE ?", "%#{car.tender_load_id}%").first
# car already exists => update
existing_car.update(car)
puts "Car exists, updating car with ID #{existing_car.id}."
else
car.save!
end
当我运行这个拍摄任务时,我收到以下错误消息:
NoMethodError: undefined method `reject' for #<Car:0x007fa3e2063a78>
它指出了这一行:
existing_car.update(car)
我该如何进行这项工作?不幸的是,我不能将if-else 部分放在 rake 任务的开头,结构需要是这样的。
提前谢谢你。
【问题讨论】:
-
@anothe 否,如果未找到记录,则不会“返回”true。不过我会添加括号。
标签: ruby-on-rails ruby activerecord