это проще, чем вы думаете, потому что это автоматически обрабатывается ActiveRecord.
Когда вы говорите «has_and_belongs_to_many», вы говорите AR связать эти две модели с отношением «многие ко многим», используя таблицу, и по большей части вам больше не нужно беспокоиться о таблице соединения. Когда вы добавите экземпляр Standard в список стандартов Rfq, это будет сделано для вас.
Вот пример:
rfq = Rfq.create
standard = Standard.create
rfq.standards << standard
Мы создали каждый из объектов, а третья строка создает соединение, сохраняя новую запись в таблице rfqs_standards с соответствующими идентификаторами. rqf.standards выглядит и действует как обычный массив, но когда вы назначаете ему объекты, ActiveRecord выполняет работу базы данных за вас.
После создания записей вы могли бы также сделать:
standard.rfqs << rfq
Вы также можете сделать оба одновременно:
rfq = Rfq.create
standard rfq.standards.create
Это создало rfq, затем создал стандарт, который автоматически подключен к rfq. Вы можете сделать то же самое в обратном порядке:
standard = Standard.create
rfq = standard.rfqs.create
Надеюсь, это поможет!
ОБНОВЛЕНИЕ: Поскольку вы упомянули формы и автоматическое сохранение, прочтите мою статью о вложенных атрибутах , в которой показано, как это реализовать, включая полные примеры кода.