В настоящее время я использую «магазин» в своей модели Rails для сохранения различных вещей в хеше. Это удобно, поскольку мне не нужно создавать множество отдельных атрибутов для этих данных, они сериализуются/десериализуются за меня, и я могу легко получить доступ к каждому из отдельных хеш-атрибутов по мере необходимости. Фрагмент кода (упрощенный):
class Request < ActiveRecord::Base
attr_accessible :data
# Data is a nested hash
store :data
# Validation
validates_presence_of :data
end
Я понимаю, что этот дизайн может быть не идеальным, когда/если :data становится очень большим (совершенно другая тема), но тем временем я хотел бы знать следующее:
- Каков максимальный размер столбца «текст» по умолчанию? В настоящее время я использую базу данных PostGres, и я полагаю, что она использует VARCHAR за кулисами, но не уверен, какой максимальный размер для этого столбца на самом деле находится в базе данных?
- Могу ли я явно установить максимальный размер для этого текстового столбца :data в моем коде create_table миграции Rails?
- Что сделает Rails, если я попытаюсь сохранить запись, в которой этот атрибут :data слишком велик? Исследования приводят меня к мысли, что он нарежет его и сохранит то, что может поместиться (очень плохо!)
- Как лучше всего защититься от потенциального повреждения хэша и проверить: размер данных ‹ МАКСИМАЛЬНО допустимый размер перед сохранением в БД?