我目前在我的 Rails 模型中使用“存储”来将各种内容保存在哈希中。这很方便,因为我不必为此数据创建大量单独的属性,它为我序列化/反序列化,并且我可以根据需要轻松访问每个单独的哈希属性。代码片段(简化):
class Request < ActiveRecord::Base
attr_accessible :data
# Data is a nested hash
store :data
# Validation
validates_presence_of :data
end
我意识到当/如果 :data 变得非常大(整个其他主题)时,这种设计可能并不理想,但与此同时,我想知道以下内容:
- “文本”列的默认最大大小是多少?我目前正在使用 PostGres 数据库,我相信它在幕后使用 VARCHAR,但不确定数据库中该列的 MAX 大小实际上是多少?
- 我可以在 Rails 迁移 create_table 代码中明确设置此 :data 文本列的最大大小吗?
- 如果我尝试保存这个 :data 属性太大的记录,Rails 会怎么做?研究让我相信它会切碎它,并存储它可以容纳的东西(非常糟糕!)
- 在存储到数据库之前,如何最好地防止潜在的哈希损坏并验证 :data size < MAX allowed size?