Sha256: d0934cde11e542d62a791f64a728f7c6962f4b71c52a9d66fb660d91276b7196

Contents?: true

Size: 1 KB

Versions: 9

Compression:

Stored size: 1 KB

Contents

module BraintreeRails
  module Validations
    module ClassMethods
      def self.extended(receiver)
        receiver.class_eval do
          include ::ActiveModel::Validations
          define_model_callbacks :persist
          validates_with validator_class
        end
      end

      def validator_class
        name.concat("Validator").constantize
      end
    end

    module InstanceMethods
      def save(options = {})
        run_callbacks :persist do
          perform_validations(options) ? super : false
        end
      end

      def save!(options = {})
        run_callbacks :persist do
          perform_validations(options) ? super : raise(RecordInvalid.new(self))
        end
      end

      def perform_validations(options={})
        perform_validation = options[:validate] != false
        perform_validation ? valid?(options[:context]) : true
      end
    end

    def self.included(receiver)
      receiver.extend         ClassMethods
      receiver.send :include, InstanceMethods
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
braintree-rails-1.4.1 lib/braintree_rails/validations.rb
braintree-rails-1.4.0 lib/braintree_rails/validations.rb
braintree-rails-1.3.0 lib/braintree_rails/validations.rb
braintree-rails-1.2.3 lib/braintree_rails/validations.rb
braintree-rails-1.2.2 lib/braintree_rails/validations.rb
braintree-rails-1.2.1 lib/braintree_rails/validations.rb
braintree-rails-1.2.0 lib/braintree_rails/validations.rb
braintree-rails-1.1.0 lib/braintree_rails/validations.rb
braintree-rails-1.0.0 lib/braintree_rails/validations.rb