FWIW, no, it is not possible to do that without a LOT of sanitation of Rails/ActiveRecord code.
The problem is that the <extremely competent and forward-looking> developers decided to do all the heavy lifting in reflections instead of the associations. Why is that a problem? Because reflections *have no information AT ALL* about the specific association they are being used for. Example: you have a model "Dog" that has_many :bones. Now: dog = Dog.first; dog.bones #=> Array Ignore the "Array" part, that's due to idiocy of the framework (basically AssociationProxy tries to be a BasicObject and fails *hard*). The framework at that point does the actual lookup through an "association proxy" which has a lot of information: the specific dog, ultimately all the bones, and additionally the reflection which has all information about the "has_many" call. Rails then goes on to basically throw away all the nice information from the association proxy, turns to the reflection, and ends up with two methods: Reflection#class_name and the derived #class_name, both of which boil down to either a value derived from the association name itself, or the :class_name option. Now you might think, alright, I'll just do some minimal hacking and fix stuff so Reflection#class_name looks up the "left side" of the association call. That won't work, because (1) the reflection is really just a dumb memoisation of the has_many call, and (2) it's pretty much a singleton, so if you change it, you'll break your entire runtime. You might also think that you could fix up the AssociationProxy. That's a better thought since it konws about the owner model and can just call aribtrary methods in there, but then you spend 4 hours on it, just to realise that later on the framework decides to use Reflection#chain and effectively bypasses all your fancy work when trying to build the scope for the final query. All in all, it's another case of Rails/AR being a humongous pile of <organically-grown code> that is pretty much unadaptable to your fancy concepts unless you want to sit down and rewrite large parts of it. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/8c7e2aa5-eeca-4469-9e22-6af7280a65cf%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

