Отношения Rails One-One — местоположение внешнего ключа

У меня две модели, адрес и страна. Адрес содержит базовую информацию об адресе (строка 1, строка 2, город и т. д.) и имеет отношение один к одному со страной.

Таблица стран доступна только для чтения, я не хочу, чтобы она менялась.

У меня есть формы, создающие столбец country_id в таблице «адреса», но он ищет address_id в таблице стран.

Как указать rails использовать country_id в таблице адресов для поиска страны?

Вот как выглядят модели:

class Address < ActiveRecord::Base
   belongs_to :consultant
   has_one :country
   accepts_nested_attributes_for :country   
end

class Country < ActiveRecord::Base
   belongs_to :address
end

Спасибо!


person christo16    schedule 15.11.2010    source источник


Ответы (1)


Из документации belongs_to:

Этот метод следует использовать только в том случае, если этот класс содержит внешний ключ.

Итак, ваш код должен быть:

class Address < ActiveRecord::Base
  has_to :consultant
  belongs_to :country
  accepts_nested_attributes_for :country   
end

class Country < ActiveRecord::Base
  has_one :address
end
person MBO    schedule 15.11.2010
comment
Спасибо! Мне также пришлось добавить :primary_key =› :country_id к адресу, чтобы заставить его работать. - person christo16; 15.11.2010