module Schema::Associations::DynamicTypes::ClassMethods
no-doc
Public Instance Methods
add_type(type, options = {}, &block)
click to toggle source
# File lib/schema/associations/dynamic_types.rb, line 13 def add_type(type, options = {}, &block) class_name = options[:class_name] || schema_dynamic_type_class_name(type) kls = Class.new(self) kls = base_schema_class.const_set(class_name, kls) schema_add_dynamic_type(type, class_name) kls.class_eval(&block) if block kls end
default_type(options = {}, &block)
click to toggle source
# File lib/schema/associations/dynamic_types.rb, line 22 def default_type(options = {}, &block) add_type(:default, options, &block) end
dynamic_type_names()
click to toggle source
# File lib/schema/associations/dynamic_types.rb, line 30 def dynamic_type_names dynamic_types.keys - [:default] end
dynamic_types()
click to toggle source
# File lib/schema/associations/dynamic_types.rb, line 26 def dynamic_types schema_options[:types] end
Private Instance Methods
schema_add_dynamic_type(type, class_name)
click to toggle source
# File lib/schema/associations/dynamic_types.rb, line 42 def schema_add_dynamic_type(type, class_name) new_schema_options = schema_options.dup new_schema_options[:types] ||= {} new_schema_options[:types][type] = class_name base_schema_class.add_value_to_class_method(:schema, schema_name => new_schema_options) new_schema_options end
schema_dynamic_type_class_name(type)
click to toggle source
# File lib/schema/associations/dynamic_types.rb, line 36 def schema_dynamic_type_class_name(type) ::Schema::Utils.classify_name(schema_name.to_s) + 'AssociationType' + ::Schema::Utils.classify_name(type.to_s) end