module Sequel::Plugins::ValidateAssociatedContext

  1. lib/sequel/plugins/validate_associated_context.rb

The validate_associated_context plugin extends the validate_associated plugin to work with the validation_contexts plugin. It ensures associated objects are validated using the validation context of the current object.

This plugin loads the validate_associated and validation_contexts plugins. The associated model must also use the validation_contexts plugin in order to access the validation context.

class Album < Sequel::Model
  plugin :validate_associated_context
  many_to_one :artist

  def validate
    super
    validate_associated_object(model.association_reflection(:artist), artist) if artist
  end
end

class Artist < Sequel::Model
  plugin :validation_contexts
  def validate
    super
    errors.add(:name, 'not present') if name.nil? && validation_context == :publish
  end
end

album = Album.new(artist: Artist.new)
album.valid?                               # => true
album.valid?(validation_context: :publish) # => false

Methods

Public Class

  1. apply

Public Class methods

apply(model)

Depend on the validate_associated and validation_contexts plugins.

[show source]
   # File lib/sequel/plugins/validate_associated_context.rb
36 def self.apply(model)
37   model.plugin :validate_associated
38   model.plugin :validation_contexts
39 end