[英]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.