Max Williams wrote:
> Let's say that i have a User object in @user, already loaded. I want
> to constantly refer to @user.role on a particular page (where User
> belongs_to :role), so i want to 'eager load' the role association.
> For the sake of argument, let's say i wasn't able to do this in the
> normal way (ie with the :include option to a find call) when i loaded
> the user out of the database in the first place, but need to do it
> subsequent to that. Is that possible?
Just to answer my own question, sort of, i think that i can do
@user[:role] = @user.role
and that sets the instance variable which is used for subsequent calls
to @user.role, effectively eager loading that association. is that
correct? Is this the same thing as the eager loading would do? eg, is
it precisely as prone to weird side effects as the regular eager
It's not at all what normal eager loading would do.
if you do
class User < ActiveRecord::Base
class << self
then you can do
User.preload_associations [user1, user2, user3], :role
(at least in rails 2.x - might very easily not work in 3.x)