| Class | ActiveLdap::Association::Proxy |
| In: |
lib/active_ldap/association/proxy.rb
|
| Parent: | Object |
| respond_to? | -> | proxy_respond_to? |
| extend | -> | proxy_extend |
# File lib/active_ldap/association/proxy.rb, line 8
8: def initialize(owner, options)
9: @owner = owner
10: @options = options
11: reset
12: extend(options[:extend]) if options[:extend]
13: end
# File lib/active_ldap/association/proxy.rb, line 20
20: def ===(other)
21: load_target and other === @target
22: end
# File lib/active_ldap/association/proxy.rb, line 51
51: def exists?
52: load_target
53: not @target.nil?
54: end
# File lib/active_ldap/association/proxy.rb, line 29
29: def reload
30: reset
31: load_target
32: end
# File lib/active_ldap/association/proxy.rb, line 24
24: def reset
25: @target = nil
26: @loaded = false
27: end
# File lib/active_ldap/association/proxy.rb, line 15
15: def respond_to?(symbol, include_priv=false)
16: proxy_respond_to?(symbol, include_priv) or
17: (load_target && @target.respond_to?(symbol, include_priv))
18: end
# File lib/active_ldap/association/proxy.rb, line 46
46: def target=(target)
47: @target = target
48: loaded
49: end
# File lib/active_ldap/association/proxy.rb, line 89
89: def find_options(options={})
90: if @owner.connection != @owner.class.connection
91: {:connection => @owner.connection}.merge(options)
92: else
93: options
94: end
95: end
# File lib/active_ldap/association/proxy.rb, line 62
62: def foreign_class
63: klass = @owner.class.associated_class(@options[:association_id])
64: klass = @owner.class.module_eval(klass) if klass.is_a?(String)
65: klass
66: end
# File lib/active_ldap/association/proxy.rb, line 97
97: def infect_connection(target)
98: conn = @owner.instance_variable_get("@connection")
99: target.connection = conn if conn
100: end
# File lib/active_ldap/association/proxy.rb, line 76
76: def load_target
77: if !@owner.new_entry? or have_foreign_key?
78: begin
79: @target = find_target unless loaded?
80: rescue EntryNotFound
81: reset
82: end
83: end
84:
85: loaded if target
86: target
87: end
# File lib/active_ldap/association/proxy.rb, line 57
57: def method_missing(method, *args, &block)
58: load_target
59: @target.send(method, *args, &block)
60: end