Module: Sequel::Plugins::LazyAttributes
- Defined in:
- 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
-
.apply(model, *attrs) ⇒ Object
Lazy attributes requires the identity map and tactical eager loading plugins.
-
.configure(model, *attrs) ⇒ Object
Set the attributes given as lazy attributes.
Class Method Details
.apply(model, *attrs) ⇒ Object
Lazy attributes requires the identity map and tactical eager loading plugins
21 22 23 24 |
# File '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/plugins/lazy_attributes.rb', line 27 def self.configure(model, *attrs) model.lazy_attributes(*attrs) unless attrs.empty? end |