Validation Rails3:在存储到数据库之前验证文本最大长度
我目前正在Rails模型中使用“store”将各种内容持久化到散列中。这很方便,因为我不必为此数据创建很多单独的属性,它为我序列化/反序列化,并且我可以根据需要轻松访问每个单独的散列属性。代码段(简化):Validation Rails3:在存储到数据库之前验证文本最大长度,validation,ruby-on-rails-3.2,rails-postgresql,Validation,Ruby On Rails 3.2,Rails Postgresql,我目前正在Rails模型中使用“store”将各种内容持久化到散列中。这很方便,因为我不必为此数据创建很多单独的属性,它为我序列化/反序列化,并且我可以根据需要轻松访问每个单独的散列属性。代码段(简化): 类请求
类请求
我意识到当/如果:数据变得非常大(一个完全不同的主题)时,这种设计可能并不理想,但同时,我想知道以下几点:
在迁移中设置最大长度 然后验证模型中的长度
谢谢,这就回答了#2,并且很容易实现#4。但是,我仍然很好奇,是否有人知道Rails通过PostGres(实际的PG SQL)中的“文本”类型迁移创建了什么,默认的最大大小是多少?关于#3,有了验证,这永远不会是一个问题。但是,我相信如果您的数据长度超过了最大长度,它可能会抛出一个错误?为什么不试试看呢?是的,当我显式地将限制设置为较小值时,我验证了验证错误。然而,我还没有时间构建一个适当的测试来自动生成一些非常大的东西,以查看默认的最大大小是什么(当我没有设置限制时)。我猜默认的最大值是相当大的…有一个答案#1记录在SO上:也就是说,可以存储的最大长度是1GB
class Request < ActiveRecord::Base
attr_accessible :data
# Data is a nested hash
store :data
# Validation
validates_presence_of :data
end