module ActiveOopish::Inheritance::ClassMethods
Public Instance Methods
instantiate_as(class_name, options = {})
click to toggle source
Public:
class_name - A String represents the class which instantiates an instance. condition - A Hash.
# File lib/activeoopish/inheritance.rb, line 17 def instantiate_as(class_name, options = {}) @instantiation_rules ||= [] @instantiation_rules << { class_name: class_name, condition: options.stringify_keys } end
Private Instance Methods
discriminate_class_for_record(record)
click to toggle source
Internal: Called by ActiveRecord::Persistence.instantiate to decide which class to use for a new record instance.
Returns a Class to instantiate an instance.
# File lib/activeoopish/inheritance.rb, line 28 def discriminate_class_for_record(record) @instantiation_rules ||= [] @instantiation_rules.each do |rule| satisfy_rule = rule[:condition].each_pair.all? do |column, expected| record[column] == expected end return rule[:class_name].constantize if satisfy_rule end self end