BUG? has_many :through makes funny queries

So I have this structure.

class Gallery < ActiveRecord::Base   belongs_to :owner, :polymorphic => true   has_many :folders, :order => 'slug', :dependent => :destroy

class Folder < ActiveRecord::Base   has_many :photos, :dependent => :destroy, :conditions => "parent_id IS NULL"   belongs_to :gallery

class User < ActiveRecord::Base   has_one :gallery, :as => :owner, :dependent => :destroy   has_many :folders, :through => :gallery

Seems fine, right? So @user.folders should do join between users, galleries and folders.

users.id (1 in the example) == gallery.owner_id and gallery.id == folders.gallery_id

Right? Well it does not.

Mysql::Error: #42S22Unknown column 'galleries.gallery_id' in 'on clause': SELECT folders.* FROM folders INNER JOIN galleries ON folders.id = galleries.gallery_id WHERE ((galleries.owner_id = 1) AND (galleries.owner_type = 'User'))

This query doesn't make a lot of sense for me... Anyone wanna explain?