Active Record Attribute Methods Before Type Cast
ActiveRecord::AttributeMethods::BeforeTypeCast
provides a way
to read the value of the attributes before typecasting and deserialization.
class Task < ActiveRecord::Base end task = Task.new(id: '1', completed_on: '2012-10-21') task.id # => 1 task.completed_on # => Sun, 21 Oct 2012 task.attributes_before_type_cast # => {"id"=>"1", "completed_on"=>"2012-10-21", ... } task.read_attribute_before_type_cast('id') # => "1" task.read_attribute_before_type_cast('completed_on') # => "2012-10-21"
In addition to read_attribute_before_type_cast
and attributes_before_type_cast,
it declares a method for all attributes with the
*_before_type_cast
suffix.
task.id_before_type_cast # => "1" task.completed_on_before_type_cast # => "2012-10-21"
Methods
Instance Public methods
attributes_before_type_cast()
Link
Returns a hash of attributes before typecasting and deserialization.
class Task < ActiveRecord::Base end task = Task.new(title: nil, is_done: true, completed_on: '2012-10-21') task.attributes # => {"id"=>nil, "title"=>nil, "is_done"=>true, "completed_on"=>Sun, 21 Oct 2012, "created_at"=>nil, "updated_at"=>nil} task.attributes_before_type_cast # => {"id"=>nil, "title"=>nil, "is_done"=>true, "completed_on"=>"2012-10-21", "created_at"=>nil, "updated_at"=>nil}
read_attribute_before_type_cast(attr_name)
Link
Returns the value of the attribute identified by attr_name
before typecasting and deserialization.
class Task < ActiveRecord::Base end task = Task.new(id: '1', completed_on: '2012-10-21') task.read_attribute('id') # => 1 task.read_attribute_before_type_cast('id') # => '1' task.read_attribute('completed_on') # => Sun, 21 Oct 2012 task.read_attribute_before_type_cast('completed_on') # => "2012-10-21"