eager load fail; why is this association loading individually?

I'm trying to avoid the N+1 queries problem with eager loading, but it's not working. The associated models are still being loaded individually.

Here are the relevant ActiveRecords and their relationships:

class Player < ActiveRecord::Base   has_one :tableau end

Class Tableau < ActiveRecord::Base   belongs_to :player   has_many :tableau_cards   has_many :deck_cards, :through => :tableau_cards end

Class TableauCard < ActiveRecord::Base   belongs_to :tableau   belongs_to :deck_card, :include => :card end

class DeckCard < ActiveRecord::Base   belongs_to :card   has_many :tableaus, :through => :tableau_cards end

class Card < ActiveRecord::Base   has_many :deck_cards end

and the query I'm using is inside this method of Player:

def tableau_contains(card_id)   self.tableau.tableau_cards = TableauCard.find :all, :include => [ {:deck_card => (:card)}], :conditions => ['tableau_cards.tableau_id = ?', self.tableau.id]   contains = false   for tableau_card in self.tableau.tableau_cards     # my logic here, looking at attributes of the Card model, with     # tableau_card.deck_card.card     # card is the model being loaded repeatedly and individually, after being loaded with the TableauCard.find :include   end   return contains end

Does it have to do with scope? This method is down a few calls in a larger loop in an observer, where I originally tried doing the eager loading because there are several places where these same objects are looped through and examined. In that observer, I load a @game object, and then load @game.players.

I eventually tried the code as it is above, with the load just before the loop, and I'm still seeing the individual SELECT queries for the individual cards objects inside the tableau_cards loop in the log. I can see the eager-loading query with the IN clause just before the tableau_cards loop as well.