Sha256: 2ff996f8deeb103cbcf2dee1a1fea5e05c8d1c8d20068f75327e66c8dfe74f7d
Contents?: true
Size: 950 Bytes
Versions: 1
Compression:
Stored size: 950 Bytes
Contents
module PloymorphicModule def self.included(base) base.extend ClassMethods end module ClassMethods def acts_as_wuid options={} #TODO auto set wuid with conditional hook has_one :wuid, :as => :wuidable, :dependent => :destroy if options[:acts_as_tree] Wuid.class_eval do acts_as_tree :foreign_key => "reference_to" end include PloymorphicModule::AdvancedInstanceMethods else include PloymorphicModule::InstanceMethods end end end module InstanceMethods def after_create super create_wuid end def create_wuid wuid.create end def wid self.wuid.id end end module AdvancedInstanceMethods def wid (self.respond_to?(:reference_to) && self.parent) ? self.parent.wid : self.wuid.id end def wid= id w = self.wuild.build :reference_to => id w.save end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ploymorphic_wuid-0.2.0 | lib/wuid/ploymorphic_module.rb |