Method: Datagrid::Columns::ClassMethods#decorate

Defined in:
lib/datagrid/columns.rb

#decorate(model = nil, &block) ⇒ void

This method returns an undefined value.

Defines a model decorator that will be used to define a column value. All column blocks will be given a decorated version of the model.

Examples:

Wrapping a model with presenter

decorate { |user| UserPresenter.new(user) }

A shortcut for doing the same

decorate { UserPresenter }


342
343
344
345
346
347
348
349
350
351
352
# File 'lib/datagrid/columns.rb', line 342

def decorate(model = nil, &block)
  if !model && !block
    raise ArgumentError, "decorate needs either a block to define decoration or a model to decorate"
  end
  return self.decorator = block unless model
  return model unless decorator

  presenter = ::Datagrid::Utils.apply_args(model, &decorator)
  presenter = presenter.new(model) if presenter.is_a?(Class)
  block_given? ? yield(presenter) : presenter
end