Sha256: 19c56c7aa2450af19629f452c48100e0bbfcf9bcc151fdc0555545287aa80e01

Contents?: true

Size: 821 Bytes

Versions: 6

Compression:

Stored size: 821 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 valid?
      validate
      errors.empty?
    end
    
    def add_error(msg)
      errors << msg
      errors.uniq!
    end
    
    def validate
      errors.clear
      execute_callbacks(:validate, [])
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
Shopify-asset_cloud-0.5.2 lib/asset_cloud/validations.rb
Shopify-asset_cloud-0.5.3 lib/asset_cloud/validations.rb
Shopify-asset_cloud-0.5.4 lib/asset_cloud/validations.rb
jamesmacaulay-asset_cloud-0.5.2 lib/asset_cloud/validations.rb
jamesmacaulay-asset_cloud-0.5.3 lib/asset_cloud/validations.rb
jamesmacaulay-asset_cloud-0.5.4 lib/asset_cloud/validations.rb