Sha256: ea50df4264a9f0a33cd06c98910ec72212badcf92d534c5e5e96ea347293941b

Contents?: true

Size: 821 Bytes

Versions: 1

Compression:

Stored size: 821 Bytes

Contents

module Kludge
  class Many < Part

    def save
      value.each(&:save)
      super
    end

    def validate
      if value.any? { |v| !v.valid? }
        value.map(&:errors).each do |e|
          e.each do |attribute, errors_array|
            errors_array.each do |msg|
              errors.add(attribute, msg) unless errors.added?(attribute, msg)
            end
          end
        end
        false
      else
        true
      end
    end

    def value=(value)
      @value = value.map do |val|
        if val.kind_of?(Hash)
          if val[:id].present?
            @name.to_s.classify.constantize.find(val.delete(:id)).tap { |v| v.assign_attributes(val) }
          else
            @name.to_s.classify.constantize.new(val)
          end
        else
          val
        end
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kludge-0.0.2 lib/kludge/many.rb