У меня есть текстовое поле в базе данных MySQL, который я использую ActiveRecord сериализовать как хэш:Сериализации существующей строки в базе данных с ActiveRecord
class Record < ActiveRecord::Base
serialize :mail_validation, Hash
end
Когда я сохранить объекты ActiveRecord в базу данных, что текстовое поле правильно сериализован и сохранен. Когда я вызываю этот атрибут, Rails корректно преобразует его в хэш.
поле в базе данных выглядит следующим образом:
mail_validation: ---
:metadata:
:county_name: Bucks
Однако, у меня есть существующие записи в базе данных, по-видимому, не сериализуются. Это выглядит следующим образом:
mail_validation: { deliverable: "N", plus4_of_zip: "1335", process_flag: "P", delivery_point: "20", cass_date: "2014-11-04" }
Когда я пытаюсь вызвать атрибут mail_validation этой записи, он возвращает результат в виде строки, а не хэш. (Записи, возвращающие строку для этого атрибута, были импортированы из старой базы данных).
Как я могу обеспечить, чтобы все записи возвращали хэш, когда я вызываю этот атрибут?
Что написал "унаследованных" записи? Это похоже на сырой JavaScript (т. Е. Сломанная попытка JSON). Во всяком случае, я думаю, что вы застряли, делая это с трудом: прочитайте данные, проанализируйте их в хеш-рубине, конвертируйте их в YAML и запишите все это время, не используя свой класс 'Record'. –