The default values to use for this model. A hash with column symbol keys
and default values. If the default values respond to call
, it
will be called to get the value, otherwise the value will be used directly.
You can manually modify this hash to set specific default values, by
default the ones will be parsed from the database.
Whether default values should be cached in the values hash after being retrieved.
# File lib/sequel/plugins/defaults_setter.rb, line 74 def cache_default_values? @cache_default_values end
Freeze default values when freezing model class
# File lib/sequel/plugins/defaults_setter.rb, line 79 def freeze @default_values.freeze super end
Handle the CURRENT_DATE and CURRENT_TIMESTAMP values specially by returning an appropriate Date or Time/DateTime value.
# File lib/sequel/plugins/defaults_setter.rb, line 103 def convert_default_value(v) case v when Sequel::CURRENT_DATE lambda{Date.today} when Sequel::CURRENT_TIMESTAMP lambda{dataset.current_datetime} else v end end
Parse the cached database schema for this model and set the default values appropriately.
# File lib/sequel/plugins/defaults_setter.rb, line 87 def set_default_values h = {} if @db_schema @db_schema.each do |k, v| if v[:callable_default] h[k] = v[:callable_default] elsif !v[:ruby_default].nil? h[k] = convert_default_value(v[:ruby_default]) end end end @default_values = h.merge!(@default_values || {}) end