#ruby-on-rails
#ruby-on-rails
Вопрос:
Я довольно новичок в Rails. Я пытаюсь спроектировать модель со следующей структурой:
Parent
- Name
- Date
- Children
- Child 1
- ...
- Child N
Где N — переменная, а дочерний элемент имеет несколько собственных атрибутов.
Каждый дочерний элемент будет создаваться и редактироваться только в контексте его родительского элемента, что означает, что мне нужна одна форма для создания / редактирования как родительского элемента, так и всех его дочерних элементов.
Мои вопросы:
- Должен ли я реализовать дочерний элемент как отдельную модель, в которой у родительского элемента много дочерних элементов, или это можно сделать как единую плоскую родительскую модель?
- Как бы я реализовал все это как единую форму, т. Е. Все дочерние элементы создаются / изменяются с помощью родительского элемента? Мне нужно было бы создать переменное количество дочерних элементов на стороне клиента, а затем отправить их вместе с родительскими данными, но я не уверен, как это сделать.
Комментарии:
1. Ответ на этот вопрос полностью зависит от домена. Вам нужно ознакомиться с самореферентными ассоциациями, наследованием одной таблицы и другими потенциальными решениями и решить, что подходит для вашего варианта использования.
Ответ №1:
В порядке запроса:
- Я бы добавил дочерние элементы в качестве отдельной модели, если родители и дочерние элементы обладают врожденными уникальными характеристиками. Если нет, я бы сделал это как отдельные объекты в одной модели (у person много людей). Зависит от ваших потребностей.
- Для этого вам следует ознакомиться с драгоценным камнем cacoon, который позволяет динамически генерировать поля для дочерних моделей. На странице Github для gem есть несколько примеров, и на ней есть несколько хороших видеороликов на YouTube.