Мне нужна помощь в том, что я считаю ActiveRecord Callback.
Я пытаюсь добиться того, чтобы при каждом сохранении определенной записи ActiveRecord фактически сохранял 2 записи в одной таблице.
Я буду держаться подальше от того, почему я этого хочу, должно быть достаточно знать, что для каждой транзакции нужны 2 отдельные, но похожие записи, сохраненные в одной таблице.
Пример:
0) У меня есть таблица под названием «ссылки», в которой будут храниться люди, связанные с другими людьми. Это выглядит так:
+----+-----------+---------------+-------------+
| id | person_id | origin_person | rcvd_person |
+----+-----------+---------------+-------------+
1) Пользователь веб-приложения введет имя отправителя и получателя (который отправляет или получает ссылку). На данный момент "person_id" пусто:
+----+-----------+---------------+-------------+
| id | person_id | origin_person | rcvd_person |
+----+-----------+---------------+-------------+
| 1 | | 5 | 10 |
+----+-----------+---------------+-------------+
2) Перед сохранением записи мне нужно скопировать значение «origin_person» в столбец «person_id»:
+----+-----------+---------------+-------------+
| id | person_id | origin_person | rcvd_person |
+----+-----------+---------------+-------------+
| 1 | 5 | 5 | 10 |
+----+-----------+---------------+-------------+
3) Наконец, после сохранения записи мне нужно сохранить дубликат записи, но со значением «rcvd_person», скопированным в «person_id»:
+----+-----------+---------------+-------------+
| id | person_id | origin_person | rcvd_person |
+----+-----------+---------------+-------------+
| 1 | 5 | 5 | 10 |
+----+-----------+---------------+-------------+
| 2 | 10 | 5 | 10 |
+----+-----------+---------------+-------------+
Это именно то, что я пытаюсь сделать, поэтому, если вы можете помочь мне с идеей о том, как этого можно достичь, это будет оценено.
Я бы предпочел оставить все это вне Rails View, так как я не хочу скрытых полей и того, что не висит вокруг.
Одна проблема, с которой я столкнулся при попытке решить эту проблему, заключалась в том, что она будет зацикливаться. Я написал некоторый код (который не работал), который будет создавать новую запись после сохранения записи, но каждое сохранение будет вызывать новую запись, которая была новым сохранением, которое ....