module Customize::Characterize

Public Class Methods

included(base) click to toggle source
# File lib/customize/characterize.rb, line 4
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

Public Instance Methods

character() click to toggle source
# File lib/customize/characterize.rb, line 13
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
inherited_characters() click to toggle source
# File lib/customize/characterize.rb, line 25
def inherited_characters
        if self.class.include?(Customize::Inherited)
                Character.where(:related_id=>ascent_ids, :related_type=>self.class.name)
        end
end