module Light::Decorator::Concerns::Associations::CollectionProxy

Public Instance Methods

decorate(options = {}) click to toggle source

Decorate ActiveRecord::Model associations

@param [Hash] options (optional) @return [ActiveRecord::Associations::CollectionProxy]

# File lib/light/decorator/concerns/associations/collection_proxy.rb, line 12
def decorate(options = {})
  @decorated = true

  override_scope(options)
  override_load_target(options)

  self
end
decorated?() click to toggle source

Check current association is decorated or not

@return [Bool]

# File lib/light/decorator/concerns/associations/collection_proxy.rb, line 24
def decorated?
  !@decorated.nil?
end

Private Instance Methods

override_load_target(options) click to toggle source
Calls superclass method
# File lib/light/decorator/concerns/associations/collection_proxy.rb, line 36
def override_load_target(options)
  @association.define_singleton_method :load_target do
    super().map { |target| target.decorate(options) }
  end
end
override_scope(options) click to toggle source
Calls superclass method
# File lib/light/decorator/concerns/associations/collection_proxy.rb, line 30
def override_scope(options)
  @association.define_singleton_method :scope do |opts = {}|
    super(opts).decorate(options)
  end
end