module RiceCooker::ClassMethods
Protected Instance Methods
initialize_model_class!()
click to toggle source
# File lib/rice_cooker/class_methods.rb, line 9 def initialize_model_class! # First priority is the namespaced model, e.g. User::Group # binding.pry # Handle InhRes computing # puts "[#{self}] In initialization, resource_class: #{self.respond_to?(:resource_class) && self.resource_class.inspect}" if self.respond_to?(:resource_class) && self.resource_class self.resource_model = self.resource_class return self.resource_model end # binding.pry # puts "[1/5] Resource model: #{self.resource_model.inspect}" self.resource_model ||= begin namespaced_class = name.sub(/Controller$/, '').singularize namespaced_class.constantize rescue NameError nil end # Second priority is the top namespace model, e.g. EngineName::Article for EngineName::Admin::ArticlesController # puts "[2/5] Resource model: #{self.resource_model.inspect}" self.resource_model ||= begin namespaced_classes = name.sub(/Controller$/, '').split('::') namespaced_class = [namespaced_classes.first, namespaced_classes.last].join('::').singularize namespaced_class.constantize rescue NameError nil end # Second second priority is the top namespace model, e.g. EngineName::Article for EngineName::Admin::ArticlesController # puts "[3/5] Resource model: #{self.resource_model.inspect}" self.resource_model ||= begin namespaced_class = name.sub(/Controller$/, '').split('::')[1..3].join('::').singularize namespaced_class.constantize rescue NameError nil end # Third priority the camelcased c, i.e. UserGroup # puts "[4/5] Resource model: #{self.resource_model.inspect}" self.resource_model ||= begin camelcased_class = name.sub(/Controller$/, '').gsub('::', '').singularize camelcased_class.constantize rescue NameError nil end # Otherwise use the Group class, or fail # puts "[5/5] Resource model: #{self.resource_model.inspect}" self.resource_model ||= begin class_name = controller_name.classify class_name.constantize rescue NameError => e raise unless e.message.include?(class_name) nil end # We prevent for creating a resource wich is not a model if self.resource_model begin self.resource_model = nil unless self.resource_model < ActiveRecord::Base rescue nil end end end