簡體   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