Module: Sequel::Plugins::ValidationContexts
- Defined in:
- lib/sequel/plugins/validation_contexts.rb
Overview
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.
Defined Under Namespace
Modules: InstanceMethods