Создание сложных вариантов записей с потомками в рельсах
У меня есть интересная головоломка, я пытался найти более элегантное решение.
У меня есть 2 модели. Surveys
а также Questions
которые связаны в has_many через отношение QuestionLogs
, has_many :questions, :through => :question_logs
Это работает нормально, моя проблема в том, что у меня есть потребность в различных опросах. например. У меня может быть 3 опроса, которые сделаны для разных регионов, скажем, в Чикаго, Лос-Анджелесе и Остине. Они разделяют 90% общих вопросов, но могут заменить один или два вопроса.
На данный момент я начинаю с одного опроса (с уникальным sid, определяемым region_id), опроса A, и когда он завершится, я создаю дубликат опроса B (тот же sid, другой region_id), который создает 10 новых Вопросов для тех же самых вопросов., а затем я заменяю 1 или 2 вопроса в зависимости от региона. (Например, если у меня есть опрос с 2 вариантами, с 10 вопросами, я получу 30 Вопросников для тех же вопросов, которые почти идентичны).
Это отлично работает. У меня вопрос, есть ли альтернативный способ избежать этого дублирования QuestionLogs. Например, способ обработки вариаций модели и ее зависимостей, запись различий, а не простое дублирование.
К вашему сведению, в каждом опросе ровно 10 вопросов, вопросы создаются отдельно перед опросом, а модель довольно сложная, например. у него есть ответы и т. д.
Любые предложения или направления будут с благодарностью, спасибо!