mysql - 如何捕获 Rails 中超出范围的特定列?

标签 mysql ruby-on-rails activerecord

假设我在名为 SampleModel 的 Rails 模型上有一个整数列 sample_column。我正在从外部源获取数据,并且使用 create! 方法创建许多新的 SampleModel 行,并将所有列作为create! 的哈希参数。有时,sample_column 太大(超出范围),MySQL 会抛出错误,但它会阻止保存整行。我想做的只是不将该 sample_column 写入数据库,以便它可以正常保存。

有什么办法可以做到这一点吗?请记住,我不知 Prop 体哪一列会提前超出范围,因为数据是不可预测的。所以我想捕获所有内容,如果无法写入则忽略该列。

最佳答案

如果大小是导致模型损坏的问题,并且如果您确定此特定列是导致模型损坏的唯一原因,那么我建议您使用救援,我建议将列类型更改为 bigint

begin
  SomeModel.create!(...., sample_column: hash[:sample_column])
rescue
  Somemodel.create!(....)
end

关于mysql - 如何捕获 Rails 中超出范围的特定列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29572472/

相关文章:

php - 文件上传总是失败

php - 持久性 PDO mysql 连接替代方案

php - 连接 2 个不同的数据库不起作用

javascript - 在Jquery代码Rails中使用Link_to

mysql - 如何从事件记录对象获取数据库 sql 值?

mysql - 如何在 native react 中显示 MySQL 数据库表的链接

ruby-on-rails - 上传到 Amazon S3 并从 Rails 服务器调用 Amazon Cognito 身份

ruby-on-rails - Rspec:测试循环数组,输入 = [],自定义类的输出 =[]。 ruby

mysql - Yii - CActive 记录 - 如何解决服务器查询缓存

ruby-on-rails - ActiveRecord 获得特定时间段内的评级优胜网站奖