Sha256: 11f3d4e6f85646f36e9215b556d0b3364cdb5a083a44b374b635cfbbcb5476ee
Contents?: true
Size: 1.44 KB
Versions: 1
Compression:
Stored size: 1.44 KB
Contents
module PolyBelongsTo module Dup extend ActiveSupport::Concern included do def self.pbt_dup_build(item_to_build_on, item_to_duplicate) if PolyBelongsTo::Pbt::IsReflected[item_to_build_on, item_to_duplicate] build_cmd = PolyBelongsTo::Pbt::BuildCmd[item_to_build_on, item_to_duplicate] dup_attrs = PolyBelongsTo::Pbt::AttrSanitizer[item_to_duplicate] build_cmd ? eval("item_to_build_on.#{build_cmd}(#{dup_attrs})") : nil end end def self.pbt_deep_dup_build(item_to_build_on, item_to_duplicate) pbt_dup_build(item_to_build_on, item_to_duplicate) PolyBelongsTo::Pbt::Reflects[item_to_duplicate].each do |ref| child = eval("item_to_duplicate.#{ref}") if child.respond_to?(:build) child.each do |obj| eval("item_to_build_on.#{PolyBelongsTo::Pbt::CollectionProxy[item_to_build_on, item_to_duplicate]}"). pbt_deep_dup_build(obj) end else eval("item_to_build_on.#{PolyBelongsTo::Pbt::CollectionProxy[item_to_build_on, item_to_duplicate]}"). pbt_deep_dup_build(child) end end item_to_build_on end end def pbt_dup_build(item_to_duplicate) self.class.pbt_dup_build(self, item_to_duplicate) end def pbt_deep_dup_build(item_to_duplicate) self.class.pbt_deep_dup_build(self, item_to_duplicate) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
poly_belongs_to-0.1.4 | lib/poly_belongs_to/dup.rb |