Sha256: db910820ec1e4d5f67a4708347c5821a84a75b538efaffa191cc563d19fdc694
Contents?: true
Size: 1.18 KB
Versions: 4
Compression:
Stored size: 1.18 KB
Contents
module Repobahn module Repository extend ActiveSupport::Concern included do include Hooks define_hook :after_conversion end module ClassMethods def db_class(*args) @db_class = args.first unless args.empty? @db_class || default_db_class end def entity_class(*args) @entity_class = args.first unless args.empty? @entity_class || default_entity_class end private def default_db_class parts = default_entity_class.to_s.split('::') parts.insert -2, 'DB' parts.join('::').constantize end def default_entity_class name.singularize.constantize end end def db_class self.class.db_class end def entity_class self.class.entity_class end def db_instances_to_entities(db_instances) entities = Array(db_instances).map { |db_instance| db_instance_to_entity(db_instance) } entities.length > 1 ? entities : entities.first end def db_instance_to_entity(db_instance) entity = entity_class.new(db_instance.attributes) run_hook :after_conversion, entity, db_instance entity end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
gummi-0.3.3 | lib/repobahn/repository.rb |
gummi-0.3.2 | lib/repobahn/repository.rb |
gummi-0.3.1 | lib/repobahn/repository.rb |
gummi-0.3.0 | lib/repobahn/repository.rb |