Sha256: 187353a2c028d7549b61e0a6d479044fe3da1fc9bb49e10a2b2b181b793f7819

Contents?: true

Size: 681 Bytes

Versions: 2

Compression:

Stored size: 681 Bytes

Contents

require 'metabolical/meta_datum'
require 'metabolical/scopes'

module Metabolical
  def self.included(klass)
    klass.extend ClassMethods    
  end  
  
  module ClassMethods
    def metabolize!
      include Metabolical::Scopes
      
      class_eval do
        has_many :metas, :as => :metabolized, :class_name => 'Metabolical::MetaDatum' do
          def [](key)
            find_by_key(key) || self.proxy_owner.metas.detect{|m| m.key == key}
          end
          
          def []=(key, data)
            meta = self[key] || self.proxy_owner.metas.build(:key => key)
            meta.data = data
            meta
          end
        end
      end
    end
  end
    
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
metabolical-0.0.2 lib/metabolical.rb
metabolical-0.0.1 lib/metabolical.rb