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 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 Album.filter{id<100}.all do |a| a.review end # You can specify multiple columns to lazily load: Album.plugin :lazy_attributes, :review, :tracklist
Classes and Modules
Public Class methods
apply
(model, *attrs)
Lazy attributes requires the tactical_eager_loading plugin
[show source]
# File lib/sequel/plugins/lazy_attributes.rb, line 22 def self.apply(model, *attrs) model.plugin :tactical_eager_loading end
configure
(model, *attrs)
Set the attributes given as lazy attributes
[show source]
# File lib/sequel/plugins/lazy_attributes.rb, line 27 def self.configure(model, *attrs) model.lazy_attributes(*attrs) unless attrs.empty? end