===(other)
click to toggle source
def ===(other)
load_target and other === @target
end
exists?()
click to toggle source
def exists?
load_target
not @target.nil?
end
loaded()
click to toggle source
def loaded
@loaded = true
end
loaded?()
click to toggle source
proxy_respond_to?(symbol, include_priv=false)
reload()
click to toggle source
def reload
reset
load_target
end
reset()
click to toggle source
def reset
@target = nil
@loaded = false
end
respond_to?(symbol, include_priv=false)
click to toggle source
def respond_to?(symbol, include_priv=false)
proxy_respond_to?(symbol, include_priv) or
(load_target && @target.respond_to?(symbol, include_priv))
end
target()
click to toggle source
target=(target)
click to toggle source
def target=(target)
@target = target
loaded
end
find_options(options={})
click to toggle source
def find_options(options={})
if @owner.connection != @owner.class.connection
{:connection => @owner.connection}.merge(options)
else
options
end
end
foreign_class()
click to toggle source
def foreign_class
klass = @owner.class.associated_class(@options[:association_id])
klass = @owner.class.module_eval(klass) if klass.is_a?(String)
klass
end
foreign_key()
click to toggle source
def foreign_key
@options[:foreign_key_name] || foreign_class.dn_attribute
end
have_foreign_key?()
click to toggle source
def have_foreign_key?
false
end
infect_connection(target)
click to toggle source
def infect_connection(target)
conn = @owner.instance_variable_get("@connection")
target.connection = conn if conn
end
load_target()
click to toggle source
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
method_missing(method, *args, &block)
click to toggle source
def method_missing(method, *args, &block)
load_target
@target.send(method, *args, &block)
end
primary_key()
click to toggle source
def primary_key
@options[:primary_key_name] || @owner.dn_attribute
end