class ActiveRecord::Base

Public Class Methods

does_keys(opts={}) click to toggle source

Call this “acts as” method within your ActiveRecord class to establish key- value behavior and prepare internal storage structures

# File lib/doeskeyvalue.rb, line 37
def self.does_keys(opts={})
  DoesKeyValue.log("Adding key-value support to class #{self.to_s}")
  # TODO: Raise exception to improper opts passed
  self.instance_eval do
    DoesKeyValue::State.instance.add_class(self, opts)
    self.send(:serialize, opts[:column], Hash) if opts[:column]
    self.send(:attr_accessor, :key_value_cache) if opts[:table]
    extend DoesKeyValue::Accessors
  end


  # if storage_column = opts[:column]
  #   DoesKeyValue.log("Adding key-value support via column #{storage_column} to class #{self.to_s}")
  #   self.instance_eval do
  #     DoesKeyValue::State.instance.add_class(self, :column=>storage_column)
  #     self.send(:serialize, storage_column, Hash)
  #     extend DoesKeyValue::ColumnStorage
  #   end

  # elsif storage_table = opts[:table]
  #   DoesKeyValue.log("Adding key-value support via table #{storage_table} to class #{self.to_s}")
  #   self.instance_eval do
  #     DoesKeyValue::State.instance.add_class(self, :table=>storage_table)
  #     extend DoesKeyValue::TableStorage
  #   end
  # end

end