Sha256: ac3ce44dc4f741f330766040403c096438a3e89ae8e33715b28ee9ce1491c6ec
Contents?: true
Size: 1.37 KB
Versions: 4
Compression:
Stored size: 1.37 KB
Contents
require 'generic_support' require 'datamapper_support' module MerbAdmin class AbstractModel # Returns all models for a given Merb app def self.all return @models if @models @models ||= [] case Merb.orm when :datamapper DataMapper::Resource.descendants.each do |m| # Remove DataMapperSessionStore because it's included by default next if m == Merb::DataMapperSessionStore if Merb.const_defined?(:DataMapperSessionStore) model = lookup(m.to_s.to_sym) @models << new(model) if model end @models.sort!{|a, b| a.model.to_s <=> b.model.to_s} else raise "MerbAdmin does not currently support the #{Merb.orm} ORM" end end # Given a symbol +model_name+, finds the corresponding model class def self.lookup(model_name) model = const_get(model_name) raise "could not find model #{model_name}" if model.nil? return model if model.include?(DataMapper::Resource) nil end attr_accessor :model def initialize(model) model = self.class.lookup(model.camel_case.to_sym) unless model.is_a?(Class) @model = model self.extend(GenericSupport) case Merb.orm when :datamapper self.extend(DatamapperSupport) else raise "MerbAdmin does not currently support the #{Merb.orm} ORM" end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
sferik-merb-admin-0.3.2 | lib/abstract_model.rb |
sferik-merb-admin-0.3.3 | lib/abstract_model.rb |
sferik-merb-admin-0.3.4 | lib/abstract_model.rb |
sferik-merb-admin-0.3.6 | lib/abstract_model.rb |