У меня есть следующие модели,
</p>
<pre><code>class City < ActiveRecord::Base
belongs_to :state
belongs_to :country
end
class State < ActiveRecord::Base
belongs_to :country
has_many :cities
end
class Country < ActiveRecord::Base
has_many :states
has_many :cities, :through => :state
end
Это моя схема.rb,
create_table "cities", :force => true do |t|
t.string "name"
t.string "state_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "countries", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "states", :force => true do |t|
t.string "name"
t.string "country_id"
t.datetime "created_at"
t.datetime "updated_at"
end
Это мои начальные данные,
country_in = Country.create(name: 'India')
state_ap = country_in.states.create(name: 'Andhra Pradesh')
state_mh = country_in.states.create(name: 'Maharashtra')
city_hyd = state_ap.cities.create(name: 'Hyderabad')
state_ap.cities.create([{name: 'Tirupathi'}, {name: 'Visakhapatnam'}])
state_mh.cities.create([{name: 'Mumbai'}, {name: 'Pune'}, {name: 'Thane'}])
Задача
Когда я пытаюсь найти все города в разделе "Индия", используя
country_in.cities
Я получаю эту ошибку: ActiveRecord::HasManyThroughAssociationNotFoundError: Could not find the association :state in model Country
Когда я пытаюсь выяснить, в какой стране находится город "Хайдарабад", используйте
city_hyd.country
, я получаю nil
Почему отсутствуют связи между городами и странами?
Мои ассоциации неправильны, есть что-то еще, что я пропустил?