Я относительно новичок в Rails и работаю над проектом, включающим несколько «вложенных» уровней данных. У меня проблемы с созданием правильных ассоциаций, чтобы я мог получить все дочерние элементы модели на 3 уровня выше. Вот пример моделей:
class Country < ActiveRecord::Base
has_many :states
end
class State < ActiveRecord::Base
belongs_to :country
has_many :cities
end
class City < ActiveRecord::Base
belongs_to :state
has_many :people
end
class Person < ActiveRecord::Base
belongs_to :city
end
Я реализовал связь в модели Country
, has_many :cities, :through => :states
и попытался вызвать Country.first.cities.all
, которая работает. Однако у меня возникают проблемы с доступом ко всем людям в данной стране, когда я пытаюсь Country.first.cities.all.people.all
в People
контроллере.
Каков наилучший способ справиться с такой ситуацией ассоциации? Должен ли я добавить внешний ключ к каждой из дочерних таблиц, например country_id
, чтобы я мог получить все People
в Country
? Любые предложения будут оценены.