module FlatMap::OpenMapper::Traits::ClassMethods
Traits
class macros
Public Instance Methods
trait(name, &block)
click to toggle source
Define a trait for a mapper class. In implementation terms, a trait is nothing more than a mounted mapper, owned by a host mapper. It shares all mappings with it. The block is passed as a body of the anonymous mapper class.
@param [Symbol] name
# File lib/flat_map/open_mapper/traits.rb, line 18 def trait(name, &block) base_class = self < FlatMap::Mapper ? FlatMap::Mapper : FlatMap::OpenMapper mapper_class = Class.new(base_class, &block) mapper_class_name = "#{ancestors.first.name}#{name.to_s.camelize}Trait" mapper_class.singleton_class.send(:define_method, :name){ mapper_class_name } mount mapper_class, :trait_name => name end