mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Include ActiveModel::Validations from ActiveRecord::Validations
This commit is contained in:
parent
09afbfd47f
commit
cc5e019f6b
2 changed files with 32 additions and 23 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue