Sha256: 49015a043e2a7c7bc68ea9bd1251cb97578d382223c0a518c36bc37dc4db4e3d

Contents?: true

Size: 976 Bytes

Versions: 2

Compression:

Stored size: 976 Bytes

Contents

module Cavalry
  class Validator
    class EachValidator
      attr_reader :source_class

      def initialize(klass)
        @source_class = klass
      end

      def append(&block)
        @source_class.class_eval(&block)
      end

      def validate
        install_force_check_belongs_to_association if Cavalry.config.force_check_belongs_to_association && @source_class.respond_to?(:reflections)
        source_class.all.flat_map {|record| validate_record(record) }.compact
      end

      private

      def validate_record(record)
        return if record.valid?
        record
      end

      def install_force_check_belongs_to_association
        return unless defined?(ActiveRecord::Reflection::BelongsToReflection)

        @source_class.class_eval do
          reflections.values.select { |r| r.is_a?(ActiveRecord::Reflection::BelongsToReflection) }.each do |r|
            validates r.name, presence: true
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cavalry-0.2.2 lib/cavalry/validator/each_validator.rb
cavalry-0.2.1 lib/cavalry/validator/each_validator.rb