Sha256: 9f75559f27a0564e30b4091806671f7ea9ddb4ab12e70e0f9eac14bd283ffc38

Contents?: true

Size: 1.02 KB

Versions: 70

Compression:

Stored size: 1.02 KB

Contents

# bundle exec rake validate
# bundle exec rake validate[user]

desc 'Validates all records of the given ActiveRecord model, defaults to all'
task :validate, [:model] => :environment do |t, args|
  args.with_defaults(:model => 'all')

  Rails.application.eager_load!
  klasses = ActiveRecord::Base.descendants.reject { |klass| klass.abstract_class? }.sort { |a, b| a.name <=> b.name }

  if args.model != 'all'
    klasses.delete_if { |klass| klass.name.downcase != args.model.singularize.downcase }
  end

  klasses.each do |klass|
    invalids = klass.unscoped.order(:id).map do |resource|
      [resource.id, '(' + resource.errors.map { |key, value| "#{key}: #{value}"}.join(', ') + ')'] unless resource.valid?
    end.compact

    if invalids.present?
      puts "#{klass.name}: #{invalids.length} invalid records"
      invalids.each { |invalid| puts invalid.join(' ') }
      puts "Invalid #{klass.name} records: #{invalids.map { |invalid| invalid.first }.join(',')}"
    else
      puts "#{klass.name}: all records valid"
    end
  end


end

Version data entries

70 entries across 70 versions & 1 rubygems

Version Path
effective_developer-0.8.6 lib/tasks/validate.rake
effective_developer-0.8.5 lib/tasks/validate.rake
effective_developer-0.8.4 lib/tasks/validate.rake
effective_developer-0.8.3 lib/tasks/validate.rake
effective_developer-0.8.2 lib/tasks/validate.rake
effective_developer-0.8.1 lib/tasks/validate.rake
effective_developer-0.8.0 lib/tasks/validate.rake
effective_developer-0.7.8 lib/tasks/validate.rake
effective_developer-0.7.7 lib/tasks/validate.rake
effective_developer-0.7.6 lib/tasks/validate.rake
effective_developer-0.7.5 lib/tasks/validate.rake
effective_developer-0.7.4 lib/tasks/validate.rake
effective_developer-0.7.3 lib/tasks/validate.rake
effective_developer-0.7.2 lib/tasks/validate.rake
effective_developer-0.7.1 lib/tasks/validate.rake
effective_developer-0.7.0 lib/tasks/validate.rake
effective_developer-0.6.17 lib/tasks/validate.rake
effective_developer-0.6.16 lib/tasks/validate.rake
effective_developer-0.6.15 lib/tasks/validate.rake
effective_developer-0.6.14 lib/tasks/validate.rake