3.9 KiB
-
Validate multiple contexts on
valid?
andinvalid?
at once.Example:
class Person include ActiveModel::Validations attr_reader :name, :title validates_presence_of :name, on: :create validates_presence_of :title, on: :update end person = Person.new person.valid?([:create, :update]) # => false person.errors.messages # => {:name=>["can't be blank"], :title=>["can't be blank"]}
Dmitry Polushkin
-
Add case_sensitive option for confirmation validator in models.
Akshat Sharma
-
Ensure
method_missing
is called for methods passed toActiveModel::Serialization#serializable_hash
that don't exist.Jay Elaraj
-
Remove
ActiveModel::Serializers::Xml
from core.Zachary Scott
-
Add
ActiveModel::Dirty#[attr_name]_previously_changed?
andActiveModel::Dirty#[attr_name]_previous_change
to improve access to recorded changes after the model has been saved.It makes the dirty-attributes query methods consistent before and after saving.
Fernando Tapia Rico
-
Deprecate the
:tokenizer
option forvalidates_length_of
, in favor of plain Ruby.Sean Griffin
-
Deprecate
ActiveModel::Errors#add_on_empty
andActiveModel::Errors#add_on_blank
with no replacement.Wojciech Wnętrzak
-
Deprecate
ActiveModel::Errors#get
,ActiveModel::Errors#set
andActiveModel::Errors#[]=
methods that have inconsistent behavior.Wojciech Wnętrzak
-
Allow symbol as values for
tokenize
ofLengthValidator
.Kensuke Naito
-
Assigning an unknown attribute key to an
ActiveModel
instance during initialization will now raiseActiveModel::AttributeAssignment::UnknownAttributeError
instead ofNoMethodError
.Example:
User.new(foo: 'some value') # => ActiveModel::AttributeAssignment::UnknownAttributeError: unknown attribute 'foo' for User.
Eugene Gilburg
-
Extracted
ActiveRecord::AttributeAssignment
toActiveModel::AttributeAssignment
allowing to use it for any object as an includable module.Example:
class Cat include ActiveModel::AttributeAssignment attr_accessor :name, :status end cat = Cat.new cat.assign_attributes(name: "Gorby", status: "yawning") cat.name # => 'Gorby' cat.status # => 'yawning' cat.assign_attributes(status: "sleeping") cat.name # => 'Gorby' cat.status # => 'sleeping'
Bogdan Gusiev
-
Add
ActiveModel::Errors#details
To be able to return type of used validator, one can now call
details
on errors instance.Example:
class User < ActiveRecord::Base validates :name, presence: true end user = User.new; user.valid?; user.errors.details => {name: [{error: :blank}]}
Wojciech Wnętrzak
-
Change validates_acceptance_of to accept true by default.
The default for validates_acceptance_of is now "1" and true. In the past, only "1" was the default and you were required to add accept: true.
-
Remove deprecated
ActiveModel::Dirty#reset_#{attribute}
andActiveModel::Dirty#reset_changes
.Rafael Mendonça França
-
Change the way in which callback chains can be halted.
The preferred method to halt a callback chain from now on is to explicitly
throw(:abort)
. In the past, returningfalse
in an ActiveModel or ActiveModel::Validationsbefore_
callback had the side effect of halting the callback chain. This is not recommended anymore and, depending on the value of theconfig.active_support.halt_callback_chains_on_return_false
option, will either not work at all or display a deprecation warning.
Please check 4-2-stable for previous changes.