我在字符串字段(VARCHAR(255))中输入了 5kb 文本并收到此错误:
Mysql2::Error: Data too long for column 'title' at row 1: INSERT INTO `posts`....
解决此问题的最佳方法是什么?
我应该在模型的 before_save 中将此文本剪切为 255 吗?
或者在控制器中修复 params[:that_field] ?
还有其他解决方案吗?
我在字符串字段(VARCHAR(255))中输入了 5kb 文本并收到此错误:
Mysql2::Error: Data too long for column 'title' at row 1: INSERT INTO `posts`....
解决此问题的最佳方法是什么?
我应该在模型的 before_save 中将此文本剪切为 255 吗?
或者在控制器中修复 params[:that_field] ?
还有其他解决方案吗?
解决方案取决于您想要实现的目标。这一切都与用户体验有关。
如果您希望用户能够为此字段输入超过 255 个字符的数据,则将该字段从 更改:string
为:text
。
如果您不希望数据长度超过 255,那么您有两种选择。如果您希望能够向用户提供验证消息,请向您的模型添加验证。Post
class Model < ...
validates_length_of :title, :maximum => 255
end
第三个选项,如果您不介意消息,请使用回调(例如 a :before_save
)在将值写入数据库之前对其进行修剪。如果您希望字符串在设置后立即被截断,您也可以覆盖属性的默认设置器。