Sha256: 0f1f995d0a5da68ac01c9e94917949c998dcbc4f47ed8bd204a9a396acaee5aa

Contents?: true

Size: 959 Bytes

Versions: 2

Compression:

Stored size: 959 Bytes

Contents

module Ciesta
  module InstanceMethods
    extend Forwardable

    # @!method assign
    # @!method assign!
    # @!method attributes
    # @see Ciesta::FieldList
    def_delegators :fields, :assign, :assign!, :attributes, :clear!

    # @!method errors
    # @see Ciesta::Validator
    def_delegators :validator, :errors

    attr_reader :fields

    # Constructor
    #
    # @param [Hash] values Hash with values
    def initialize(values = {})
      @fields = Ciesta::FieldList.define(self.class.definitions)
      assign(values || {})
    end

    # Checks if form is valid
    #
    # @param [Hash] params Attrubutes to assign before validation
    #
    # @return [Boolean]
    def valid?(values = {})
      assign(values) unless values.empty?
      validator.valid?(attributes)
    end

    private

    # Returns form validator
    #
    # @api private
    # @see Ciesta::Form.validator
    def validator
      self.class.validator
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ciesta-0.4.1 lib/ciesta/instance_methods.rb
ciesta-0.4.0 lib/ciesta/instance_methods.rb