Форма ActiveAdmin для отношения has_many не позволит вам создать, потому что родитель не существует - PullRequest
0 голосов
/ 03 марта 2020

У меня есть Table1 , у которого есть отношение has_many с Table2

# app/models/table1.rb
class Table1 < ApplicationRecord
     .
     .
     .
  has_many :table2_relations, class_name: Table2, foreign_key: instance2_id

Отношение own_to в Table2 помечено как обязательное:

# app/models/table2.rb
class Table2 < ApplicationRecord
     .
     .
     .
  belongs_to instance2, class_name: Table1, required: true

Мой файл ActiveAdmin:

ActiveAdmin.register Table1 do
  .
  .
  .
  controller do
    def create
       .
       .
       .
    end

У меня есть страница ActiveAdmin для создания новой таблицы Table1, которая также включает в себя table2_relations, но так как значение bound_to обязательно равно true, при вызове super сначала будут выполняться все операторы вставки. затем зафиксируйте, в результате чего instance2 не существует ошибки, потому что создание Table1 еще не зафиксировано до того, как будет создано создание table2_relations. Создание table2_relations возможно только в контексте обновления. Как я могу сделать создание Table1 первым перед созданием table2_relations? Спасибо

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Я делал «Вложенные ресурсы» так же, как сказал Прагья, но это не сработает. затем я обнаруживаю, что мне нужно добавить inverse_of:: instance2 в Таблицу 1 так же, как этот ответ: Форма has_many ActiveAdmin не сохраняется, если родительская модель является новой и НЕ равна NULL в дочерней модели

0 голосов
/ 03 марта 2020

См. Заголовок «Вложенные ресурсы» по ссылке ниже:

Ссылка: https://activeadmin.info/5-forms.html

Попробуйте создать вложенную форму. Это решит проблему.

...