Module: ActiveRecord::Store

Extended by:
Included in:
Defined in:


Store gives you a thin wrapper around serialize for the purpose of storing hashes in a single column. It's like a simple key/value store baked into your record when you don't care about being able to query that store outside the context of a single record.

You can then declare accessors to this store that are then accessible just like any other attribute of the model. This is very helpful for easily exposing store keys to a form or elsewhere that's already built around just accessing attributes on the model.

Make sure that you declare the database column used for the serialized store as a text, so there's plenty of room.



class User < ActiveRecord::Base

u = 'black', homepage: '')
u.color                          # Accessor stored attribute

u.settings[:country]  # => 'Denmark'
u.settings['country'] # => 'Denmark'

# Add additional accessors to an existing store through store_accessor
class SuperUser < User
  store_accessor :settings, :privileges, :servants

The stored attribute names can be retrieved using stored_attributes.


Overwriting default accessors


class Song < ActiveRecord::Base
  store :settings, accessors: [:volume_adjustment]

  def volume_adjustment=(decibels)

  def volume_adjustment

Defined Under Namespace

Modules: ClassMethods Classes: IndifferentCoder

Method Summary

Methods included from ActiveSupport::Concern

append_features, extended, included