Rails3:在存储到DB之前验证文本最大长度

时间:2012-11-01 19:28:11

标签: validation ruby-on-rails-3.2 rails-postgresql

我目前在我的Rails模型中使用'store'来将各种东西保存在哈希中。这很方便,因为我不必为这些数据创建许多单独的属性,它为我序列化/反序列化,我可以根据需要轻松访问每个单独的哈希属性。代码段(简化):

class Request < ActiveRecord::Base
  attr_accessible :data

  # Data is a nested hash
  store :data

  # Validation
  validates_presence_of :data
end

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

  1. “文字”列的默认最大尺寸是多少?我目前正在使用PostGres数据库,我相信它在幕后使用VARCHAR,但不确定此列的MAX大小实际上在数据库中是什么?
  2. 我可以在我的Rails迁移create_table代码中为此显式设置最大大小:数据文本列吗?
  3. 如果我尝试保存这样的记录,那么Rails会做什么:数据属性太大了?研究让我相信它会砍掉它,并存储它能够适合的东西(非常糟糕!)
  4. 如何最好地防止潜在的哈希损坏并验证:数据大小&lt; MAX存储在DB中之前是否允许大小?

1 个答案:

答案 0 :(得分:1)