I've just posted the ticket with patch which makes association readers return target record instead of association proxy.
The logic behind the change is that we are already loading proxy target immediately after creating proxy. This is needed because we must return nil if target record does not exists (for if/unless operators). And because we always have target record or nil why not just return them ?
The change is slight change of API, as can be seen by count of tests I had to adjust (not 0, but still small). To give people access to association proxies, I've added new public method: #association_proxy(name, force_reload=false), which returns proxy object without trying to load it's target.
What's the general public's opinion on this change?
If this change will be accepted, non-collection associations proxies will not proxy anything anymore. But this can be cleaned up later.