Я создаю вики.Каждая статья имеет множество ревизий, а статья принадлежит одному текущему обзору.Таким образом, в базе данных Статьи имеют одну ссылку на идентификатор редакции, а каждая редакция имеет одну ссылку на статью, к которой принадлежит.Прежде чем я продолжу, кажется ли это нормальным способом делать вещи?Это кажется мне довольно неортодоксальным, но логичным, и я не уверен, как другие в подобных ситуациях настраивают вещи.
Проблема в том, что этот тип взаимных отношений принадлежат, кажется, действительно отбрасывает Rails при созданиимоделей.Когда я впервые создаю статью, я хотел бы также создать начальную ревизию, чтобы идти с ней.
Я добавил метод before_create и сделал что-то вроде:
initial_revision = self.revisions.build
self.current_revision = initial_revision
, но этовызвать переполнение стека при сохранении, так как Rails, по-видимому, пытается в цикле сначала сохранить Article, поэтому у него есть article_id, который нужно вставить в Revision, а затем сначала сохранить Revision, так что у него есть current_revision_id, который нужно вставить в Article.
Когда я разбиваю вещи и не создаю их одновременно (но все еще в транзакции), первая созданная не получает свой набор ссылок.Например:
initial_revision = Revisions.create
self.current_revision = initial_revision
initial_revision.article = self
оставил бы ревизию с нулевым article_id, поскольку он пропустил сохранение.
Я думаю, что я мог бы обойти это, вызвав также метод after_create, просто для инициализациипеременная с обновлением и сохранением, но это превращается в гигантский беспорядок, и я чувствую, что в Rails это обычно означает, что я делаю что-то неуместно.
Может кто-нибудь помочь, или я застрял, создаваянебольшой метод after_create, который сохраняет изменения?