Sha256: 18626c49a09e4ed1cd845607e3344f4a13f27d47fcd3620edd1d25eccae13049
Contents?: true
Size: 1 KB
Versions: 1
Compression:
Stored size: 1 KB
Contents
require 'metabolical/meta_datum' require 'metabolical/scopes' module Metabolical def self.included(klass) klass.extend ClassMethods end module ClassMethods def metabolize! if self.respond_to?(:named_scope) include Metabolical::AR3Scopes else include Metabolical::AR4Scopes end class_eval do has_many :metas, :as => :metabolized, :class_name => 'Metabolical::MetaDatum' do def [](key) owner = (self.respond_to?(:proxy_association) ? self.proxy_association.owner : self.proxy_owner) find_by_key(key) || owner.metas.detect{|m| m.key == key} || owner.metas.build(:key => key) end def []=(key, data) owner = (self.respond_to?(:proxy_association) ? self.proxy_association.owner : self.proxy_owner) meta = self[key] meta.data = data meta.save unless owner.new_record? meta end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
metabolical-1.1.0 | lib/metabolical.rb |