has_many :through a belongs_to

I'm trying to set up a has_many through association, and it should go through a belongs_to assocation.

class Company   has_many :videos end

class Site   belongs_to :company   has_many :videos, :through => :company end

Site.find(:first).videos

ActiveRecord::StatementInvalid: PGError: ERROR: column companies.company_id does not exist : SELECT videos.* FROM videos INNER JOIN companies ON videos.company_id = companies.id WHERE ((companies.company_id = 1))

From the documentation:

":through: Specifies a Join Model to perform the query through. Options for :class_name and :foreign_key are ignored, as the association uses the source reflection. You can only use a :through query through a belongs_to or has_many association."

So it seems as though I should be able to do it...but AR is doing the join incorrectly. Any ideas?

Pat

site.company.videos ?

or...

class Site belongs_to :company delegate :videos, :to => :company end

Perhaps the docs are unclear? Here's a couple has_many :through examples:

class Article   has_many :comments   has_many :users, :through => comments end

class Comment   belongs_to :user   belongs_to :article end

class User   has_many :articles   has_many :comments, :through => :articles end

I'm a newbie, but I'm going to take a crack at this one.

From what I understand, you have three models: Site, Company, and

Video

From your example, I don't understand which model describes the pivot

table -- the table in the middle of the many to many relationship I believe you are trying to establish, if I understand correctly. I think your pivot table is sites, for the model Site. I believe that would look like this:

class Company   has_many :sites   has_many :videos :through => :sites end

class Site   belongs_to :companies   belongs_to :videos end

class Video   has_many :sites   has_many :companies :through => :sites end

If you are trying to make a many to many relationship between videos and companies, then the above is how you do it. The pivot table belongs to each of the tables it joins; each table in the many-to-many relationship has_many of the other table, but each also has_many of the pivot table.

Charlie

I'm trying to set up a has_many through association, and it should go through a belongs_to assocation.

class Company   has_many :videos end

class Site   belongs_to :company   has_many :videos, :through => :company end

Site.find(:first).videos

ActiveRecord::StatementInvalid: PGError: ERROR: column companies.company_id does not exist : SELECT videos.* FROM videos INNER JOIN companies ON videos.company_id = companies.id WHERE ((companies.company_id = 1))

From the documentation:

":through: Specifies a Join Model to perform the query through. O

tions for :class_name and :foreign_key are ignored, as the