【发布时间】:2016-02-23 21:36:42
【问题描述】:
添加验证时,很容易使数据库中已经存在的数据无效。
是否有验证数据库中数据的 Gem?
加载所有记录并查看它们是否有效应该很容易,但如果某些东西已经存在,我不想重新发明它。
【问题讨论】:
添加验证时,很容易使数据库中已经存在的数据无效。
是否有验证数据库中数据的 Gem?
加载所有记录并查看它们是否有效应该很容易,但如果某些东西已经存在,我不想重新发明它。
【问题讨论】:
不确定是否有 gem 可以执行此操作,因为您拥有无效记录的情况并不常见。我可以理解,如果您在没有验证的情况下导入了大量数据或在创建记录后创建了验证,您可能希望这样做。
我会把它作为一个 rake 任务来做。根据您的数据库的大小,这可能会很昂贵。
namespace :validate do
desc "validates all records"
task :check_all_records do
# get all records
Module.constants.select { |c| (eval c).is_a? Class }.each do |class|
# load 1000 into memory at a time and check if they're valid
class.find_each{ |record| fix_the_record_method unless record.valid? }
end
end
end
【讨论】: