Sha256: 6e7c20277b8baa83c568c2d6e0da680fe0b140a6516be3f9cc90760cef68ed48
Contents?: true
Size: 936 Bytes
Versions: 3
Compression:
Stored size: 936 Bytes
Contents
class Restly::Base::Resource::Specification::Fields < Restly::Proxies::Base attr_reader :spec def initialize(spec) @spec = spec @removed = Set.new @added = Set.new super Restly::Base::Fields::FieldSet.new(spec.model) end def - field @removed << field replace(__getobj__.send __method__, field) end def + field @added << field replace(__getobj__.send __method__, field) end private def method_missing(m, *args, &block) reload_specification! if !super.present? || m == :inspect if (value = super).is_a? self.class replace(super) else value end end def replace(object) duplicate = self.dup duplicate.__setobj__ object duplicate end def reload_specification! from_spec = spec[:attributes] || [] fields = (from_spec - @removed.to_a) + @added.to_a __setobj__ Restly::Base::Fields::FieldSet.new(spec.model, fields) end end
Version data entries
3 entries across 3 versions & 1 rubygems