Rails迁移允许您使用limit属性指定字符串列的最大长度。是否有最小长度的相应属性,或者只能通过模型上的验证来完成?
答案 0 :(得分:1)
不,没有相应的min_length声明。最佳解决方案是模型级别的验证。您可以在此处查看可用选项:
答案 1 :(得分:0)
最大长度是一个数据库功能,它控制数据库为列分配的内存量。与验证相比,这是非常不同的,因为DB只会截断超出该长度的任何内容。
我所知道的任何数据库都没有相应的最小值。恕我直言也不是一个特别有用的功能。所以它应该由应用程序(Rails)级别验证而不是数据库模式定义来处理。
请参阅:
答案 2 :(得分:0)
...只能通过模型验证来完成吗?
可能不完全是你想要的但是如果你使用Postgresql,你可以使用CONSTRAINT
:
ALTER TABLE table_name
ADD CONSTRAINT check_minimum_length CHECK (LENGTH(column_name) >= 5);
不过,我强烈建议使用ActiveModel::Validations
,因为验证应该在应用层完成。
答案 3 :(得分:-2)
是的,它是可行的。与Rails Guides显示一样,您应该在模型中使用:
validates :column_name, length: { minimum: 2 }
访问该链接以获取更多验证类型。