На первый взгляд это может показаться простым вопросом. Возможно, вы даже подозреваете, что ответ был получен раньше, но не довольно. Я потратил много усилий на очистку сети (включая переполнение стека) и не смог найти ответ.has_one и принадлежит_от вместе
Это самая близкая вещь, которую я мог найти: Using has_one and belongs_to together, однако это не совсем ответит на мой вопрос.
Я использую Rails 4 и MySQL
Структура базы данных выглядит следующим образом:
партнеры таблицы
id
name
primary_contact_id
стол контакты
id
partner_id
first_name
last_name
Довольно прямо вперед, вправо ? Само собой разумеется.
class Partner < ActiveRecord::Base
has_one :primary_contact, :class_name => "Partners::Contact", :primary_key => 'primary_contact_id'
has_many :contacts, :class_name => "Partners::Contact"
accepts_nested_attributes_for :primary_contact
validates_presence_of :primary_contact
end
class Partners::Contact < ActiveRecord::Base
belongs_to :partner
end
Как вы можете видеть, при создании партнера, первичный контакт требуется (форма и т.д., все настроено правильно)
Единственная проблема, я испытываю то, что при создании primary_contact наряду с партнером, ActiveRecord не понимает, что ему необходимо назначить partner_id для создаваемого контакта, создаваемого partner_id ...
Лучшие практики здесь? Я не хочу создавать столбец в таблице контактов, который указывает (bool или иначе), если этот контакт является первичным или нет. Это не нормальная нормализация базы данных (независимо от того, что означает «rails convention»).
Спасибо за помощь и мысли!
Это звучит неплохо. Я просто попробовал это, однако из-за того, что партнер создан params.require (: partner) .permit (: company_name, ... primary_contact_attributes: ...) Мои тесты все еще не работают ... – Volte