Sha256: 5c6339d9fac1888de31cc02bb1fe5bb71da56d7f505a8cf2d2ea87235358ead2
Contents?: true
Size: 1.04 KB
Versions: 11
Compression:
Stored size: 1.04 KB
Contents
module CassandraObject class RecordInvalid < StandardError attr_reader :record def initialize(record) @record = record super("Invalid record: #{@record.errors.full_messages.to_sentence}") end def self.raise_error(record) raise new(record) end end module Validation extend ActiveSupport::Concern include ActiveModel::Validations included do define_model_callbacks :validation define_callbacks :validate, :scope => :name end module ClassMethods def create!(attributes) new(attributes).tap &:save! end end module InstanceMethods def valid? run_callbacks :validation do super end end def save(options={}) perform_validations(options) ? super : false end def save! save || RecordInvalid.raise_error(self) end protected def perform_validations(options={}) (options[:validate] != false) ? valid? : true end end end end
Version data entries
11 entries across 11 versions & 1 rubygems