module CustomFieldsStringExtension
Public Instance Methods
constantize()
click to toggle source
Calls superclass method
# File lib/custom_fields/extensions/active_support.rb, line 4 def constantize super rescue NameError => e # DEBUG: puts "constantizing #{self.inspect}" # alright, does it look like a custom_fields dynamic klass ? if self =~ CustomFields::KLASS_REGEXP base = ::Regexp.last_match(1).constantize # we can know it for sure if base.with_custom_fields? relation = base.relations.values.detect do |association| association.options[:custom_fields_parent_klass] == true end # load the class which holds the recipe to build the dynamic klass if relation && parent_instance = relation.klass.find(::Regexp.last_match(2)) # DEBUG: puts "re-building #{self}" return parent_instance.klass_with_custom_fields(relation.inverse_of) end end end # not a custom_fields dynamic klass or unable to re-build it raise e end