| 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 7
7: def initialize(owner, options)
8: @owner = owner
9: @options = options
10: extend(options[:extend]) if options[:extend]
11: reset
12: end
# File lib/active_ldap/association/proxy.rb, line 19
19: def ===(other)
20: load_target and other === @target
21: end
# File lib/active_ldap/association/proxy.rb, line 50
50: def exists?
51: load_target
52: not @target.nil?
53: end
# File lib/active_ldap/association/proxy.rb, line 28
28: def reload
29: reset
30: load_target
31: end
# File lib/active_ldap/association/proxy.rb, line 23
23: def reset
24: @target = nil
25: @loaded = false
26: end
# File lib/active_ldap/association/proxy.rb, line 14
14: def respond_to?(symbol, include_priv=false)
15: proxy_respond_to?(symbol, include_priv) or
16: (load_target && @target.respond_to?(symbol, include_priv))
17: end
# File lib/active_ldap/association/proxy.rb, line 45
45: def target=(target)
46: @target = target
47: loaded
48: end
# File lib/active_ldap/association/proxy.rb, line 88
88: def find_options(options={})
89: if @owner.connection != @owner.class.connection
90: {:connection => @owner.connection}.merge(options)
91: else
92: options
93: end
94: end
# File lib/active_ldap/association/proxy.rb, line 61
61: def foreign_class
62: klass = @owner.class.associated_class(@options[:association_id])
63: klass = @owner.class.module_eval(klass) if klass.is_a?(String)
64: klass
65: end
# File lib/active_ldap/association/proxy.rb, line 96
96: def infect_connection(target)
97: conn = @owner.instance_variable_get("@connection")
98: target.connection = conn if conn
99: end
# File lib/active_ldap/association/proxy.rb, line 75
75: def load_target
76: if !@owner.new_entry? or have_foreign_key?
77: begin
78: @target = find_target unless loaded?
79: rescue EntryNotFound
80: reset
81: end
82: end
83:
84: loaded if target
85: target
86: end
# File lib/active_ldap/association/proxy.rb, line 56
56: def method_missing(method, *args, &block)
57: load_target
58: @target.send(method, *args, &block)
59: end