Module: ActiveResource::Serialization

Extended by:
ActiveSupport::Concern
Included in:
Base
Defined in:
lib/active_resource/serialization.rb

Overview

Compatibilitiy with Active Record’s serialize method as the :coder option.

Writing to String columns

Encodes Active Resource instances into a string to be stored in the database. Decodes strings read from the database into Active Resource instances.

class User < ActiveRecord::Base
  serialize :person, coder: Person
end

class Person < ActiveResource::Base
  schema do
    attribute :name, :string
  end
end

user = User.new
user.person = Person.new name: "Matz"

Writing string values incorporates the Base.format:

Person.format = :json

user.person = Person.new name: "Matz"
user.person_before_type_cast # => "{\"name\":\"Matz\"}"

Person.format = :xml

user.person = Person.new name: "Matz"
user.person_before_type_cast # => "<?xml version=\"1.0\" encoding=\"UTF-8\"?><person><name>Matz</name></person>"

Instances are loaded as persisted when decoded from data containing a primary key value, and new records when missing a primary key value:

user.person = Person.new
user.person.persisted? # => false

user.person = Person.find(1)
user.person.persisted? # => true

Writing to JSON and JSONB columns

class User < ActiveRecord::Base
  serialize :person, coder: ActiveResource::Coder.new(Person, :serializable_hash)
end

class Person < ActiveResource::Base
  schema do
    attribute :name, :string
  end
end

user = User.new
user.person = Person.new name: "Matz"
user.person.name # => "Matz"

user.person_before_type_cast # => {"name"=>"Matz"}

Defined Under Namespace

Modules: ClassMethods