Я относительно новичок в 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
? Мы ценим любые предложения.