Сериализация объектов ActiveRecord без сохранения их атрибутов? - PullRequest
0 голосов
/ 26 марта 2010

Я работаю над проблемой, когда мне нужно хранить сериализованные иерархии объектов Ruby в базе данных. Многие из объектов, которые необходимо сохранить, являются объектами ActiveRecord с большим количеством атрибутов. Вместо того чтобы сохранять целые объекты и затем обновлять их атрибуты из БД при их загрузке (в случае их изменения, что вполне вероятно), было бы проще просто сохранить ссылки (класс и идентификатор базы данных) для этих объектов.

Кто-нибудь знает, есть ли способ сделать это в Rails, или для него есть существующий гем? Хотел проверить, существует ли что-то, прежде чем тратить на это массу времени.

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

Насколько я понимаю вашу проблему, вы должны Google для: acts_as_nested_set better_nested_set even_better_nested_set и awesome_nested_set. Я знаю, что они не хранят сериализованные иерархии, но вы должны хранить их узлы атомарно. Это делают даже огромные сайты. Кроме этого - вы должны рассмотреть NoSQL (или БД без схемы).

1 голос
/ 26 марта 2010

Насколько я понимаю вашу проблему, вы должны добавить к вам модель :serialize field_name и вставить все атрибуты вложенного объекта в это поле. Rails будет сериализовать этот объект, используя gem Marshal.

Есть несколько примеров сериализации с использованием Marshal без рельсов и ActiveRecord. И это - это ответ на переполнение стека, как это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...