ruby-on-rails - 如何在 Rails rake 任务中运行验证
问题描述
我有一个从 CSV 文件导入数据的 rake 任务,它工作得很好。现在的问题是我想向我的 mysql 表中已有的数据添加更多数据。现在这个 CSV 文件包含一些已经导入 mysql 的数据。如何跳过 CSV 和 mysql 中的数据?我想避免在 mysql 表中重复。这是我的工作 rake 任务。
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
我尝试validates_uniqueness_of :name
在下面添加,namespace :populate_honda do
但它给了我一个无方法错误。我怎样才能达到我的预期目标?
解决方案
您应该放入validates_uniqueness_of :name
类Model
文件,因为验证属于ActiveRecord
类。
推荐阅读
- azure - 无法将 VM 资源添加到 Azure DevOps 环境
- node.js - 此请求的签名无效 - BINANCE
- r - which.max() 提取最后一个最大值
- java - maven3.x 部署到 nexus3 问题
- swift - Xcode 13 中的 Tabview 行为更改
- javascript - 使用 Soundcloud javascript API 播放私人曲目
- javascript - Firestore 监听器不会取消订阅 - VUE JS 3
- javascript - Google Apps 脚本:HTML 模板上的脚本
- c# - 如何使用两个 DbContext 将 IdentityUser 链接到 EF Core 中的实体
- python - Plotly 在 Python 中不尊重颜色字典