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