Module: Sequel::Plugins::LazyAttributes

Module | Sequel::Plugins::LazyAttributes
In: | lib/sequel/plugins/lazy_attributes.rb

The lazy_attributes plugin allows users to easily set that some attributes should not be loaded by default when loading model objects. If the attribute is needed after the instance has been retrieved, a database query is made to retreive the value of the attribute.

This plugin depends on the identity_map and tactical_eager_loading plugin, and allows you to eagerly load lazy attributes for all objects retrieved with the current object. So the following code should issue one query to get the albums and one query to get the reviews for all of those albums:

      Album.plugin :lazy_attributes, :review
      Sequel::Model.with_identity_map do
        Album.filter{id<100}.all do |a|
          a.review
        end
      end

### Methods

apply configure

### Classes and Modules

Module Sequel::Plugins::LazyAttributes::ClassMethods
Module Sequel::Plugins::LazyAttributes::InstanceMethods

### Public Class methods

apply(model, *attrs)

Tactical eager loading requires the tactical_eager_loading plugin

[Source]

        # File lib/sequel/plugins/lazy_attributes.rb, line 21
    21:       def self.apply(model, *attrs)
    22:         model.plugin :identity_map
    23:         model.plugin :tactical_eager_loading
    24:       end

configure(model, *attrs)

Set the attributes given as lazy attributes

[Source]

        # File lib/sequel/plugins/lazy_attributes.rb, line 27
    27:       def self.configure(model, *attrs)
    28:         model.lazy_attributes(*attrs) unless attrs.empty?
    29:       end

[Validate]