Module: Sequel::Plugins::LazyAttributes

Defined in:
lib/sequel/lib/sequel/plugins/lazy_attributes.rb

Overview

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

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Class Method Summary collapse

Class Method Details

.apply(model, *attrs) ⇒ Object

Tactical eager loading requires the tactical_eager_loading plugin


21
22
23
24
# File 'lib/sequel/lib/sequel/plugins/lazy_attributes.rb', line 21

def self.apply(model, *attrs)
  model.plugin :identity_map
  model.plugin :tactical_eager_loading  
end

.configure(model, *attrs) ⇒ Object

Set the attributes given as lazy attributes


27
28
29
# File 'lib/sequel/lib/sequel/plugins/lazy_attributes.rb', line 27

def self.configure(model, *attrs)
  model.lazy_attributes(*attrs) unless attrs.empty?
end