Sha256: bc7bd6c0ef4267c669d3bc922faf20223e68e353202d29a1abf94c8e896b63db

Contents?: true

Size: 924 Bytes

Versions: 9

Compression:

Stored size: 924 Bytes

Contents

module AssetCloud
  module Validations
    def self.included(base)
      base.extend ClassMethods
      base.class_eval do
        include AssetCloud::Callbacks

        alias_method_chain :store, :validation
      end
    end

    module ClassMethods
      def validate(*validations, &block)
        validations << block if block_given?
        write_inheritable_array(:validate, validations)
      end
    end

    def store_with_validation
      validate
      errors.empty? ? store_without_validation : false
    end

    def errors
      @errors ||= []
    end

    def warnings
      @warnings ||= []
    end

    def valid?
      validate
      errors.empty?
    end

    def add_error(msg)
      errors << msg
      errors.uniq!
    end

    def add_warning(*msgs)
      warnings.concat(msgs)
    end

    def validate
      errors.clear
      warnings.clear
      execute_callbacks(:validate, [])
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
asset_cloud-2.2.4 lib/asset_cloud/validations.rb
asset_cloud-2.2.2 lib/asset_cloud/validations.rb
asset_cloud-2.2.1 lib/asset_cloud/validations.rb
asset_cloud-2.2.0 lib/asset_cloud/validations.rb
asset_cloud-2.1.0 lib/asset_cloud/validations.rb
asset_cloud-2.0.0 lib/asset_cloud/validations.rb
asset_cloud-1.1.1 lib/asset_cloud/validations.rb
asset_cloud-1.1.0 lib/asset_cloud/validations.rb
asset_cloud-1.0.2 lib/asset_cloud/validations.rb