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