То, что я хотел бы сделать, это соединить одну модель с другой, используя две промежуточные модели. Вот абстракция:
Country has_many Companies
Company has_many Buildings, Company belongs_to Country
Building has_many Rooms, Building belongs_to Company
Room belongs_to Building
Я хочу иметь возможность использовать Country.first.rooms, поэтому я подумал, что модель Country будет такой простой, как:
class Country < ActiveRecord::Base
has_many :companies
has_many :buildings, :through=>:companies
has_many :rooms, :through=>:buildings
end
Однако, это пытается сгенерировать SQL как:
SELECT * FROM rooms
INNER JOIN buildings
ON rooms
.building_id = building
.id WHERE ((building
.country_id = 1))
Очевидно, building.country_id не существует. Как мне обойти это?