В моем приложении у меня есть возможность создавать «уроки», и каждый урок содержит несколько «компонентов».Прямо сейчас я пытаюсь реализовать возможность создания урока из шаблона, чтобы он дублировал / воссоздал компоненты из шаблона для нового урока.
Структура данных моего component
- это нечтонапример:
{
id: 123,
type: Section,
content: "abc",
section_id: null
},
{
id: 124,
type: Question,
content: "abc?",
section_id: 123
},
{
id: 125,
type: Section,
content: "defg",
section_id: null
},
{
id: 126,
type: Outcome,
content: "defg?",
section_id: 125
},
Желаемый результат:
{
id: 993,
type: Section,
content: "abc",
section_id: null
},
{
id: 994,
type: Question,
content: "abc?",
section_id: 993
},
{
id: 995,
type: Section,
content: "defg",
section_id: null
},
{
id: 996,
type: Outcome,
content: "defg?",
section_id: 995
},
Вы можете видеть, что существует связь между Question
/ Outcome
и Section
- section_id
.
В моей модели урока я перебираю компоненты шаблона и беру их атрибуты для вновь созданных компонентов урока.
class Lesson
attr_accessor :lesson_template_id
# == Callbacks ==============================
after_create :create_template_components, if: :lesson_template_id_present?
def lesson_template
if @lesson_template_id != ''
LessonTemplate.find(@lesson_template_id)
else
nil
end
end
private
def lesson_template_id_present?
!!@lesson_template_id
end
def create_template_components
if lesson_template
lesson_template.components.each do |c|
self.components.create!({
type: c.type,
content: c.content,
section_id: c.section_id
})
end
end
end
Но проблема в том, что section_id
неверен, потому что вновь создаваемые разделы будут иметь новый / другой id
.Как я могу пересмотреть свою модель, чтобы убедиться, что компоненты созданы правильно?