是否有Gem检查所有DB记录是否有效?

时间:2016-02-23 21:36:42

标签: ruby-on-rails rubygems

添加验证时,很容易使数据库中的数据无效。

是否有Gem验证数据库中的数据?

加载所有记录并查看它们是否有效应该很容易,但如果已存在某些内容我不想重新发明它。

1 个答案:

答案 0 :(得分:0)

不确定是否有宝石执行此操作,因为通常情况下您将拥有无效记录。我可以理解,如果您在创建记录后导入了大量未经验证的数据或创建了验证,您可能希望这样做。

我会这样做作为佣金任务。根据数据库的大小,这可能很昂贵。

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
相关问题