我在字符串字段(varchar(255))中输入了5KB文本,收到以下错误:
Mysql2::Error: Data too long for column 'title' at row 1: INSERT INTO `posts`....
解决这个问题的最好方法是什么?
在保存到模型之前,我是否应该将此文本剪切到255英寸?
或者修复控制器中的参数[:该字段]?
还有其他解决办法吗?
最佳答案
解决方案取决于你想要实现什么。这都是关于用户体验的。
如果希望用户能够为此字段输入超过255个字符的数据,请将该字段从:string
更改为:text
。
如果不希望数据超过255,则有两个选项。如果您希望能够向用户提供验证消息,请将validation添加到Post
模型中。
class Model < ...
validates_length_of :title, :maximum => 255
end
第三个选项,如果您不介意该消息,请在将其写入数据库之前使用回调(例如a
:before_save
)来修剪该值。如果希望字符串在设置后立即被截断,也可以重写属性的默认设置器。关于ruby-on-rails - Rails:数据对于列而言太长,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11276641/