Sha256: 2019466b18f7f5f64c55db2d8aebdd21da664dd59c415773b43f8e789cf7eafc

Contents?: true

Size: 794 Bytes

Versions: 3

Compression:

Stored size: 794 Bytes

Contents

# frozen_string_literal: true

module Servitium
  class ScopedAttributes
    attr_reader :context, :store, :validation_context

    def initialize(context, store, validation_context = nil)
      @context = context
      @store = store
      @validation_context = validation_context
    end

    def attribute(name, *args)
      store << name.to_s
      context.send(:attribute, name, *args)
    end

    def validates(name, options = {})
      options[:on] ||= validation_context if validation_context
      context.send(:validates, name, options)
    end

    def validate(name, options = {}, &block)
      options[:on] ||= validation_context if validation_context
      context.send(:validate, name, options, &block)
    end

    def call(block)
      instance_exec(&block)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
servitium-1.3.0 lib/servitium/scoped_attributes.rb
servitium-1.2.28 lib/servitium/scoped_attributes.rb
servitium-1.2.20 lib/servitium/scoped_attributes.rb