Sha256: d26ff782f9031043ed704927c1fae0fe341ec5c6b2ba3e3c37f2d4b28d82e9e0

Contents?: true

Size: 806 Bytes

Versions: 5

Compression:

Stored size: 806 Bytes

Contents

module Customize
	module Characterize

		def self.included base
			base.extend ClassMethods
			base.has_many :characters, :class_name=>Customize::Character.name, :as=>:related
			base.accepts_nested_attributes_for :characters
		end

		module ClassMethods
		end

		def character
			@character ||= proc {
				ascent_ids =  self.class.include?(Customize::Inherited) ? self.ascent_ids : []
				all_character = Character.where(:related_id=>(ascent_ids | [self.id]), :related_type=>self.class.name)
				all_character.inject(HashWithIndifferentAccess.new) { |map, item| 
					map[item.key] = item.value
					map
				}
			}.call

		end
		
		def inherited_characters
			if self.class.include?(Customize::Inherited)
				Character.where(:related_id=>ascent_ids, :related_type=>self.class.name)
			end
		end
	end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
customize-0.0.8 lib/customize/characterize.rb
customize-0.0.7 lib/customize/characterize.rb
customize-0.0.6 lib/customize/characterize.rb
customize-0.0.5 lib/customize/characterize.rb
customize-0.0.4 lib/customize/characterize.rb