2

我目前在我的 Rails 模型中使用“存储”来将各种内容保存在哈希中。这很方便,因为我不必为此数据创建大量单独的属性,它为我序列化/反序列化,并且我可以根据需要轻松访问每个单独的哈希属性。代码片段(简化):

class Request < ActiveRecord::Base
  attr_accessible :data

  # Data is a nested hash
  store :data

  # Validation
  validates_presence_of :data
end

我意识到当/如果 :data 变得非常大(整个其他主题)时,这种设计可能并不理想,但与此同时,我想知道以下内容:

  1. “文本”列的默认最大大小是多少?我目前正在使用 PostGres 数据库,我相信它在幕后使用 VARCHAR,但不确定数据库中该列的 MAX 大小实际上是多少?
  2. 我可以在 Rails 迁移 create_table 代码中明确设置此 :data 文本列的最大大小吗?
  3. 如果我尝试保存这个 :data 属性太大的记录,Rails 会怎么做?研究让我相信它会切碎它,并存储它可以容纳的东西(非常糟糕!)
  4. 在存储到数据库之前,如何最好地防止潜在的哈希损坏并验证 :data size < MAX allowed size?
4

1 回答 1

1

在迁移中设置最大长度

http://databasically.com/2011/03/01/a-limit-of-rails-migrations/

然后验证模型中的长度

http://guides.rubyonrails.org/active_record_validations_callbacks.html#length

于 2012-11-01T19:56:27.143 回答