繁体   English   中英

如何在 Rails rake 任务中运行验证

[英]How to run validations in Rails rake task

我有一个从 CSV 文件导入数据的 rake 任务,它运行良好。 现在的问题是我想向我的 mysql 表中已经存在的数据添加更多数据。 现在这个 CSV 文件包含一些已经导入到 mysql 中的数据。 如何跳过 CSV 和 mysql 中的数据? 我想避免在 mysql 表中重复。 这是我的工作耙任务。

namespace :populate_honda do
 desc "TODO"
  task pop_honda: :environment do
   vehicleid = Vehicle.where("name = 'Honda'").first.id
   Model.where(:vehicle_id => vehicleid).destroy_all
   honda_file = File.read(Rails.root.join('lib', 'tasks', 'honda.csv'))
   honda_list = CSV.parse(honda_file, :headers => true)
   honda_list.each do |m|
    t = Model.new
    t.name = m['model_name'].titleize
    t.vehicle_id = vehicleid
    t.createdate = Date.today
    t.user_id = 99
    t.save
   end
   puts honda_list.length.to_s + " Honda models successfully imported"
 end
end

我尝试在namespace :populate_honda do下方添加validates_uniqueness_of :name namespace :populate_honda do但它给了我一个无方法错误。 我怎样才能实现我的预期目标?

您应该将validates_uniqueness_of :name放在Model类文件中,因为验证属于ActiveRecord类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM