Rails: создайте ассоциацию между элементом и вложенным элементом 2-го уровня - PullRequest
0 голосов
/ 19 апреля 2011

Следующая система предназначена для управления контактами. Каждый контакт принадлежит организации, и каждая организация имеет много мест. Контакт также связан с одним местоположением из головной организации. Модель организации выглядит следующим образом

has_many :contacts
has_many :locations
accepts_nested_attributes_for :locations, :reject_if => lambda { |a| a["name"].blank? }

Я хочу, чтобы он принимал вложенные атрибуты для местоположений, потому что, когда пользователь добавляет организацию, он также может добавить местоположение для нее на лету.

Модель контакта выглядит следующим образом

  has_one :location
  belongs_to  :organisation
  accepts_nested_attributes_for :organisation

Та же история, когда добавляется контакт, я хочу, чтобы пользователь мог добавлять организацию на лету, но организации необходимо иметь местоположение, поэтому в представлении существует второй уровень вложенности, чтобы также создать местоположение для организации. Он работает нормально, он добавляет контакт, он добавляет организацию и местоположение, он создает связь между местоположением и организацией, но происходит то, что у меня есть поле "location_id" в контакте, и я хочу иметь в этом идентификатор местоположения, добавленного для организации на лету. Кто-нибудь знает чистый способ сделать это через модель, или мне нужно обойти это с некоторыми изменениями в контроллерах?

1 Ответ

0 голосов
/ 20 апреля 2011

Если вы используете @location = @contact.build_location, он должен создать идентификатор, который в данный момент отсутствует, хотя идентификатор @contact не существует на момент сборки.

...