Я хочу сериализовать неполную / временную модель как атрибут другой модели, такой как:
class User < ActiveRecord::Base
serialize :pending_post
end
Где pending_post назначается модель активной записи:
...
user.pending_post = Post.new(:title => "Whatever", :message => "whatever")
user.save
Новместо сохранения yaml для новой модели Post атрибут pending_post имеет значение nil (в БД и при перезагрузке).Сериализация прекрасно работает с другими объектами, хэшами, массивами и т. Д., Но в этом случае она равна нулю.Это Rails 2.3.9, но я провел быстрый тест с 3.0.1 и увидел те же результаты.Я нашел это описание проблемы лет назад: http://www.ruby -forum.com / topic / 101858 .
Я знаю, что мог бы вручную сериализовать / десериализовать объект (который работает нормально) или сериализовать только post.attributes, но мне интересно, если кто-нибудь знает, почему это действует так, как это?Похоже, что если новое сообщение будет сохранено до того, как оно будет присвоено user.pending_post, то в качестве атрибута user.pending_post сохраняется только идентификатор.Я уверен, что это преднамеренно, а не ошибка, но я совершенно не понимаю причины.Это плохая форма для сериализации модели active_record?