Module Sequel::Plugins::DefaultsSetter
In: lib/sequel/plugins/defaults_setter.rb

The defaults_setter plugin makes the column getter methods return the default values for new objects, if the values have not already been set. Example:

  # column a default NULL
  # column b default 2
  album = Album.new
  album.a # => nil
  album.b # => 2
  album = Album.new(a: 1, b: 3)
  album.a # => 1
  album.b # => 3

You can manually set default values as well:

  Album.default_values[:a] = 4
  Album.new.a # => 4

You can also provide procs to set default values:

  Album.default_values[:a] = lambda{Date.today}
  Album.new.a # => Date.today

By default, default values returned are not cached:

  Album.new.a.equal?(Album.new.a) # => false

However, you can turn on caching of default values:

  Album.plugin :defaults_setter, cache: true
  Album.new.a.equal?(Album.new.a) # => false

Note that if the cache is turned on, the cached values are stored in the values hash:

  Album.plugin :defaults_setter, cache: true
  album = Album.new
  album.values # => {}
  album.a
  album.values # => {:a => Date.today}

Usage:

  # Make all model subclass instances set defaults (called before loading subclasses)
  Sequel::Model.plugin :defaults_setter

  # Make the Album class set defaults
  Album.plugin :defaults_setter

Methods

configure  

Classes and Modules

Module Sequel::Plugins::DefaultsSetter::ClassMethods
Module Sequel::Plugins::DefaultsSetter::InstanceMethods

Public Class methods

Set the default values based on the model schema. Options:

:cache :Cache default values returned in the model‘s values hash.

[Source]

    # File lib/sequel/plugins/defaults_setter.rb, line 55
55:       def self.configure(model, opts=OPTS)
56:         model.instance_exec do
57:           set_default_values
58:           @cache_default_values = opts[:cache] if opts.has_key?(:cache)
59:         end
60:       end

[Validate]