[英]How to run validations in Rails rake task
I have a rake task that imports data from a CSV file, its working very well.我有一个从 CSV 文件导入数据的 rake 任务,它运行良好。 Now problem is I want to add more data to already existing data in my mysql table.
现在的问题是我想向我的 mysql 表中已经存在的数据添加更多数据。 Now this CSV file contains some data that is already imported into mysql.
现在这个 CSV 文件包含一些已经导入到 mysql 中的数据。 How can I skip data that is in CSV and in mysql already?
如何跳过 CSV 和 mysql 中的数据? I want to avoid duplicated in mysql table.
我想避免在 mysql 表中重复。 Here is my working rake task.
这是我的工作耙任务。
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
I tried adding validates_uniqueness_of :name
just below namespace :populate_honda do
but its giving me a no method error.我尝试在
namespace :populate_honda do
下方添加validates_uniqueness_of :name
namespace :populate_honda do
但它给了我一个无方法错误。 How can I achieve my intended goal?我怎样才能实现我的预期目标?
您应该将validates_uniqueness_of :name
放在Model
类文件中,因为验证属于ActiveRecord
类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.