提交 cc5e019f 编写于 作者: P Pratik Naik

Include ActiveModel::Validations from ActiveRecord::Validations

上级 09afbfd4
......@@ -3136,7 +3136,7 @@ def clone_attribute_value(reader_method, attribute_name)
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 @@ def initialize(record)
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 @@ def create!(attributes = nil, &block)
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
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)
# Returns the Errors object that holds all information about attribute error messages.
def errors
@errors ||= Errors.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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册