class Schofield::Generators::Levels
Attributes
all[R]
hierarchy[R]
sortables[R]
Public Class Methods
exists?(name)
click to toggle source
# File lib/generators/schofield/levels.rb, line 42 def self.exists? name @model_names.include?(name.to_s) end
find(name)
click to toggle source
# File lib/generators/schofield/levels.rb, line 38 def self.find name @all[@names[name]] end
models=(models)
click to toggle source
# File lib/generators/schofield/levels.rb, line 15 def self.models= models @model_names = models.map{ |m| m.name.underscore } models.each do |model| if polymorphic_model?(model) superclass = add_level(model) subclasses(model).each do |subclass| add_level(subclass, superclass) superclass.subclasses << subclass end else add_level(model) end end end
sortable=(sortable)
click to toggle source
# File lib/generators/schofield/levels.rb, line 34 def self.sortable=sortable @sortables[sortable] = true end
Private Class Methods
add_level(model, superclass=nil)
click to toggle source
# File lib/generators/schofield/levels.rb, line 70 def self.add_level model, superclass=nil level = Level.new(model, superclass) @all << level @names[model.name.underscore] = @all.length - 1 level end
polymorphic_model?(model)
click to toggle source
# File lib/generators/schofield/levels.rb, line 51 def self.polymorphic_model? model model.columns.find { |c| c.name == 'type' }.present? end
subclasses(model)
click to toggle source
# File lib/generators/schofield/levels.rb, line 55 def self.subclasses model begin answer = Responses.get "Which models extend #{model.name}?" subclasses = answer.split(/[^\w]+/).map{ |a| a.camelize.constantize } raise StandardError if subclasses.blank? rescue NameError => error Responses.say "Could not find models: #{error}" retry rescue StandardError Responses.say "You must answer!" retry end subclasses end