Module Sequel::Plugins::ValidationContexts
In: lib/sequel/plugins/validation_contexts.rb

The validation_contexts plugin adds support for a validation_context method inside a validate method. You pass in the validation context to use via the :validation_context option to Sequel::Model#save && Sequel::Model#valid?:

  class Album < Sequel::Model
    plugin :validation_contexts
    def validate
      super
      errors.add(:status_id, 'not 1') if status_id != 1 && validation_context == :initial
      errors.add(:status_id, 'not 2') if status_id != 2 && validation_context == :approve
    end
  end

  Album.new(status_id: 1).valid?(validation_context: :initial) # => true
  Album.new(status_id: 2).valid?(validation_context: :initial) # => false

  Album.new(status_id: 1).valid?(validation_context: :approve) # => false
  Album.new(status_id: 2).valid?(validation_context: :approve) # => true

There is no validation context used by default, so validation_context will be nil if one is not specified. If you want to differentiate between creating new objects and updating existing objects, just use +new?+.

Once this plugin is loaded into a model, after you freeze an instance of that model, you can no longer specify a validation context when validating the instance.

Classes and Modules

Module Sequel::Plugins::ValidationContexts::InstanceMethods

[Validate]