Include ActiveModel::Validations from ActiveRecord::Validations

This commit is contained in:
Pratik Naik 2009-03-20 19:12:18 +00:00
parent 09afbfd47f
commit cc5e019f6b
2 changed files with 32 additions and 23 deletions

View File

@ -3136,7 +3136,7 @@ module ActiveRecord #:nodoc:
Base.class_eval do
extend QueryCache::ClassMethods
include ::ActiveModel::Validations, Validations
include Validations
include Locking::Optimistic, Locking::Pessimistic
include AttributeMethods
include Dirty

View File

@ -14,10 +14,16 @@ module ActiveRecord
end
end
class Errors < ActiveModel::Errors
end
module Validations
def self.included(base) # :nodoc:
base.extend ClassMethods
base.send :include, ActiveModel::Validations
base.send :include, InstanceMethods
base.class_eval do
alias_method_chain :save, :validation
alias_method_chain :save!, :validation
@ -38,31 +44,34 @@ module ActiveRecord
end
end
end
# The validation process on save can be skipped by passing false. The regular Base#save method is
# replaced with this when the validations module is mixed in, which it is by default.
def save_with_validation(perform_validation = true)
if perform_validation && valid? || !perform_validation
save_without_validation
else
false
module InstanceMethods
# The validation process on save can be skipped by passing false. The regular Base#save method is
# replaced with this when the validations module is mixed in, which it is by default.
def save_with_validation(perform_validation = true)
if perform_validation && valid? || !perform_validation
save_without_validation
else
false
end
end
# Attempts to save the record just like Base#save but will raise a RecordInvalid exception instead of returning false
# if the record is not valid.
def save_with_validation!
if valid?
save_without_validation!
else
raise RecordInvalid.new(self)
end
end
# Returns the Errors object that holds all information about attribute error messages.
def errors
@errors ||= Errors.new(self)
end
end
# Attempts to save the record just like Base#save but will raise a RecordInvalid exception instead of returning false
# if the record is not valid.
def save_with_validation!
if valid?
save_without_validation!
else
raise RecordInvalid.new(self)
end
end
# Returns the Errors object that holds all information about attribute error messages.
def errors
@errors ||= Errors.new(self)
end
end
end