Module: Vedeu::Repositories::Model::SingletonMethods

Defined in:
lib/vedeu/repositories/model.rb

Overview

Provide additional behaviour as singleton methods to the including class or module.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#repositoryVedeu::Repositories::Repository (readonly)



24
25
26
# File 'lib/vedeu/repositories/model.rb', line 24

def repository
  @repository
end

Instance Method Details

#build(attributes = {}, &block) ⇒ Object

Build models using a simple DSL when a block is given, otherwise returns a new instance of the class including this module.

Parameters:

  • attributes (Hash) (defaults to: {})

    A collection of attributes specific to the model.

  • block (Proc)

    The block passed to the build method.

Returns:

  • (Object)

    An instance of the model.



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/vedeu/repositories/model.rb', line 34

def build(attributes = {}, &block)
  model = new(attributes)

  Vedeu.log(type:    :debug,
            message: "DSL building: '#{model.class.name}' for " \
                     "'#{model.name}'")

  model.deputy.instance_eval(&block) if block_given?

  model
end

#repo(klass) ⇒ void

This method returns an undefined value.

Allow models to specify their repository using a class method.

Parameters:

  • klass (void)


51
52
53
# File 'lib/vedeu/repositories/model.rb', line 51

def repo(klass)
  @repository = klass
end

#store(attributes = {}, &block) ⇒ Object

Create and store a model with the given attributes.

Parameters:

  • attributes (Hash) (defaults to: {})

    A collection of attributes specific to the model.

  • block (Proc)

    A block of code to be executing whilst storing.

Returns:

  • (Object)

    An instance of the model.



62
63
64
# File 'lib/vedeu/repositories/model.rb', line 62

def store(attributes = {}, &block)
  new(attributes).store(&block)
end