The new association error belongs to Active Record, not Active Model. See #18700 for reference.
2.3 KiB
-
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.