Sha256: 114823bfad0f88c70153800337b90bd962096d7e88844b59fed7f6e58d9ea113

Contents?: true

Size: 875 Bytes

Versions: 48

Compression:

Stored size: 875 Bytes

Contents

module CassandraObject
  class RecordInvalid < StandardError
    attr_reader :record
    def initialize(record)
      @record = record
      super("Invalid record: #{@record.errors.full_messages.to_sentence}")
    end
  end

  module Validations
    extend ActiveSupport::Concern
    include ActiveModel::Validations

    included do
      define_callbacks :validate, scope: :name
    end

    module ClassMethods
      def create!(attributes = {})
        new(attributes).tap do |object|
          object.save!
        end
      end
    end

    def save(options={})
      if perform_validations(options)
        super
        true
      else
        false
      end
    end

    def save!
      save || raise(RecordInvalid.new(self))
    end

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

Version data entries

48 entries across 48 versions & 3 rubygems

Version Path
extendi-cassandra_object-1.1.1 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.1.0 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.20 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.19 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.18 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.17 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.16 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.15 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.14 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.13 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.12 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.11 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.10 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.9 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.8 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.7 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.6 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.5 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.4 lib/cassandra_object/validations.rb
extendi-cassandra_object-1.0.1 lib/cassandra_object/validations.rb