mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Deprecate Model#validate/validate_on_create/validate_on_update. Use Model.validate :method and likewise
This commit is contained in:
parent
320933205e
commit
d758d996d1
7 changed files with 74 additions and 34 deletions
|
@ -82,10 +82,7 @@ module ActiveModel
|
||||||
# Runs all the specified validations and returns true if no errors were added otherwise false.
|
# Runs all the specified validations and returns true if no errors were added otherwise false.
|
||||||
def valid?
|
def valid?
|
||||||
errors.clear
|
errors.clear
|
||||||
|
|
||||||
run_callbacks(:validate)
|
run_callbacks(:validate)
|
||||||
validate if respond_to?(:validate)
|
|
||||||
|
|
||||||
errors.empty?
|
errors.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -97,12 +94,6 @@ module ActiveModel
|
||||||
def get_attribute_value(attribute)
|
def get_attribute_value(attribute)
|
||||||
respond_to?(attribute.to_sym) ? send(attribute.to_sym) : instance_variable_get(:"@#{attribute}")
|
respond_to?(attribute.to_sym) ? send(attribute.to_sym) : instance_variable_get(:"@#{attribute}")
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
|
||||||
|
|
||||||
# Overwrite this method for validation checks on all saves and use <tt>Errors.add(field, msg)</tt> for invalid attributes.
|
|
||||||
def validate
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,13 @@ class Reply < Topic
|
||||||
validate :errors_on_empty_content
|
validate :errors_on_empty_content
|
||||||
validate_on_create :title_is_wrong_create
|
validate_on_create :title_is_wrong_create
|
||||||
|
|
||||||
|
validate :check_empty_title
|
||||||
|
validate_on_create :check_content_mismatch
|
||||||
|
validate_on_update :check_wrong_update
|
||||||
|
|
||||||
attr_accessible :title, :author_name, :author_email_address, :written_on, :content, :last_read
|
attr_accessible :title, :author_name, :author_email_address, :written_on, :content, :last_read
|
||||||
|
|
||||||
def validate
|
def check_empty_title
|
||||||
errors[:title] << "Empty" unless attribute_present?("title")
|
errors[:title] << "Empty" unless attribute_present?("title")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -14,7 +18,7 @@ class Reply < Topic
|
||||||
errors[:content] << "Empty" unless attribute_present?("content")
|
errors[:content] << "Empty" unless attribute_present?("content")
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_on_create
|
def check_content_mismatch
|
||||||
if attribute_present?("title") && attribute_present?("content") && content == "Mismatch"
|
if attribute_present?("title") && attribute_present?("content") && content == "Mismatch"
|
||||||
errors[:title] << "is Content Mismatch"
|
errors[:title] << "is Content Mismatch"
|
||||||
end
|
end
|
||||||
|
@ -24,7 +28,7 @@ class Reply < Topic
|
||||||
errors[:title] << "is Wrong Create" if attribute_present?("title") && title == "Wrong Create"
|
errors[:title] << "is Wrong Create" if attribute_present?("title") && title == "Wrong Create"
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_on_update
|
def check_wrong_update
|
||||||
errors[:title] << "is Wrong Update" if attribute_present?("title") && title == "Wrong Update"
|
errors[:title] << "is Wrong Update" if attribute_present?("title") && title == "Wrong Update"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -164,14 +164,25 @@ module ActiveRecord
|
||||||
|
|
||||||
run_callbacks(:validate)
|
run_callbacks(:validate)
|
||||||
|
|
||||||
validate if respond_to?(:validate)
|
if respond_to?(:validate)
|
||||||
|
ActiveSupport::Deprecation.warn("Base#validate has been deprecated, please use Base.validate :method instead")
|
||||||
|
validate
|
||||||
|
end
|
||||||
|
|
||||||
if new_record?
|
if new_record?
|
||||||
run_callbacks(:validate_on_create)
|
run_callbacks(:validate_on_create)
|
||||||
validate_on_create if respond_to?(:validate_on_create)
|
|
||||||
|
if respond_to?(:validate_on_create)
|
||||||
|
ActiveSupport::Deprecation.warn("Base#validate_on_create has been deprecated, please use Base.validate_on_create :method instead")
|
||||||
|
validate_on_create
|
||||||
|
end
|
||||||
else
|
else
|
||||||
run_callbacks(:validate_on_update)
|
run_callbacks(:validate_on_update)
|
||||||
validate_on_update if respond_to?(:validate_on_update)
|
|
||||||
|
if respond_to?(:validate_on_update)
|
||||||
|
ActiveSupport::Deprecation.warn("Base#validate_on_update has been deprecated, please use Base.validate_on_update :method instead")
|
||||||
|
validate_on_update
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
errors.empty?
|
errors.empty?
|
||||||
|
@ -185,16 +196,6 @@ module ActiveRecord
|
||||||
def get_attribute_value(attribute)
|
def get_attribute_value(attribute)
|
||||||
respond_to?(attribute.to_sym) ? send(attribute.to_sym) : self[attribute.to_sym]
|
respond_to?(attribute.to_sym) ? send(attribute.to_sym) : self[attribute.to_sym]
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
|
||||||
|
|
||||||
# Overwrite this method for validation checks used only on creation.
|
|
||||||
def validate_on_create
|
|
||||||
end
|
|
||||||
|
|
||||||
# Overwrite this method for validation checks used only on updates.
|
|
||||||
def validate_on_update
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -16,6 +16,24 @@ class ProtectedPerson < ActiveRecord::Base
|
||||||
attr_protected :first_name
|
attr_protected :first_name
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class DeprecatedPerson < ActiveRecord::Base
|
||||||
|
set_table_name 'people'
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def validate
|
||||||
|
errors[:name] << "always invalid"
|
||||||
|
end
|
||||||
|
|
||||||
|
def validate_on_create
|
||||||
|
errors[:name] << "invalid on create"
|
||||||
|
end
|
||||||
|
|
||||||
|
def validate_on_update
|
||||||
|
errors[:name] << "invalid on update"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class ValidationsTest < ActiveRecord::TestCase
|
class ValidationsTest < ActiveRecord::TestCase
|
||||||
fixtures :topics, :developers
|
fixtures :topics, :developers
|
||||||
|
|
||||||
|
@ -150,4 +168,20 @@ class ValidationsTest < ActiveRecord::TestCase
|
||||||
assert_equal "Dan Brown", reply["author_name"]
|
assert_equal "Dan Brown", reply["author_name"]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_deprecated_validation_instance_methods
|
||||||
|
tom = DeprecatedPerson.new
|
||||||
|
|
||||||
|
assert_deprecated do
|
||||||
|
assert tom.invalid?
|
||||||
|
assert_equal ["always invalid", "invalid on create"], tom.errors[:name]
|
||||||
|
end
|
||||||
|
|
||||||
|
tom.save(false)
|
||||||
|
|
||||||
|
assert_deprecated do
|
||||||
|
assert tom.invalid?
|
||||||
|
assert_equal ["always invalid", "invalid on update"], tom.errors[:name]
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -146,10 +146,13 @@ class Account < ActiveRecord::Base
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
validate :check_empty_credit_limit
|
||||||
|
|
||||||
protected
|
protected
|
||||||
def validate
|
|
||||||
errors.add_on_empty "credit_limit"
|
def check_empty_credit_limit
|
||||||
end
|
errors.add_on_empty "credit_limit"
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
|
|
@ -52,10 +52,13 @@ module MyApplication
|
||||||
i.belongs_to :nested_unqualified_billing_firm, :class_name => 'Nested::Firm'
|
i.belongs_to :nested_unqualified_billing_firm, :class_name => 'Nested::Firm'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
validate :check_empty_credit_limit
|
||||||
|
|
||||||
protected
|
protected
|
||||||
def validate
|
|
||||||
errors.add_on_empty "credit_limit"
|
def check_empty_credit_limit
|
||||||
end
|
errors.add_on_empty "credit_limit"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,7 +11,11 @@ class Reply < Topic
|
||||||
|
|
||||||
attr_accessible :title, :author_name, :author_email_address, :written_on, :content, :last_read
|
attr_accessible :title, :author_name, :author_email_address, :written_on, :content, :last_read
|
||||||
|
|
||||||
def validate
|
validate :check_empty_title
|
||||||
|
validate_on_create :check_content_mismatch
|
||||||
|
validate_on_update :check_wrong_update
|
||||||
|
|
||||||
|
def check_empty_title
|
||||||
errors[:title] << "Empty" unless attribute_present?("title")
|
errors[:title] << "Empty" unless attribute_present?("title")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -19,7 +23,7 @@ class Reply < Topic
|
||||||
errors[:content] << "Empty" unless attribute_present?("content")
|
errors[:content] << "Empty" unless attribute_present?("content")
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_on_create
|
def check_content_mismatch
|
||||||
if attribute_present?("title") && attribute_present?("content") && content == "Mismatch"
|
if attribute_present?("title") && attribute_present?("content") && content == "Mismatch"
|
||||||
errors[:title] << "is Content Mismatch"
|
errors[:title] << "is Content Mismatch"
|
||||||
end
|
end
|
||||||
|
@ -29,7 +33,7 @@ class Reply < Topic
|
||||||
errors[:title] << "is Wrong Create" if attribute_present?("title") && title == "Wrong Create"
|
errors[:title] << "is Wrong Create" if attribute_present?("title") && title == "Wrong Create"
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_on_update
|
def check_wrong_update
|
||||||
errors[:title] << "is Wrong Update" if attribute_present?("title") && title == "Wrong Update"
|
errors[:title] << "is Wrong Update" if attribute_present?("title") && title == "Wrong Update"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue