Sha256: e6d81c7e59baa6b6f0690aa0330358e6d309934d004f00b20c7bc0b84b43a1eb
Contents?: true
Size: 1.72 KB
Versions: 3
Compression:
Stored size: 1.72 KB
Contents
module ActiveLdap module Association class Proxy alias_method :proxy_respond_to?, :respond_to? alias_method :proxy_extend, :extend def initialize(owner, options) @owner = owner @options = options extend(options[:extend]) if options[:extend] reset end def respond_to?(symbol, include_priv=false) proxy_respond_to?(symbol, include_priv) or (load_target && @target.respond_to?(symbol, include_priv)) end def ===(other) load_target and other === @target end def reset @target = nil @loaded = false end def reload reset load_target end def loaded? @loaded end def loaded @loaded = true end def target @target end def target=(target) @target = target loaded end def exists? load_target not @target.nil? end private def method_missing(method, *args, &block) load_target @target.send(method, *args, &block) end def foreign_class klass = @owner.class.associated_class(@options[:association_id]) klass = @owner.class.module_eval(klass) if klass.is_a?(String) klass end def have_foreign_key? false end def primary_key @options[:primary_key_name] || foreign_class.dn_attribute end def load_target if !@owner.new_entry? or have_foreign_key? begin @target = find_target unless loaded? rescue EntryNotFound reset end end loaded if target target end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ruby-activeldap-0.8.1 | lib/active_ldap/association/proxy.rb |
ruby-activeldap-0.8.2 | lib/active_ldap/association/proxy.rb |
ruby-activeldap-0.8.0 | lib/active_ldap/association/proxy.rb |