【问题标题】:Rails3: Validate text max length before storing in DBRails3:在存储到数据库之前验证文本最大长度
【发布时间】:2012-11-01 19:28:11
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    【讨论】:

    • 谢谢,这回答了 #2,并且对于 #4 来说很容易实现。
    • 但是,我仍然很好奇是否有人知道 Rails 通过 PostGres(实际 PG SQL)中的“文本”类型迁移创建了什么以及默认的 MAX 大小是多少?
    • 关于#3,在验证到位后,这将永远不会成为问题。但是,我相信如果您的数据长度超过您的最大长度,它会抛出一个错误,也许?为什么不试试看呢?
    • 是的,当我明确将限制设置为较小的值时,我验证了验证错误。但是,我没有时间构建一个适当的测试来自动生成非常大的东西来查看默认的 MAX 大小是多少(当我没有设置限制时)。我的猜测是默认的 MAX 相当大......
    • SO上记录了#1的答案:stackoverflow.com/questions/10395975/… 也就是说,可以存储的最大长度是1 GB
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多