ruby-on-rails 什么是使精确变化的Rails迁移可逆的首选方法?

q8l4jmvw  于 2023-07-01  发布在  Ruby
关注(0)|答案(1)|浏览(105)

我有几个表,其中的列是用指定的精度和小数位数创建的。我需要创建一个迁移来提高精度,以容纳超过先前定义的值的新数据。我希望迁移是可逆的,但是,一旦在数据库中输入了较长的数据值,回滚这些迁移将失败,因为MySQL将抛出“Out of range value for column...”错误。
使精度变化迁移可逆的首选方法是什么?目前(在开发中),我有down方法定义了与up方法相同的精度,但这是处理这种情况的“正确”方法吗?虽然从技术上讲这不是回滚,但它确实允许连续回滚到以前的迁移。

tzxcd3kk

tzxcd3kk1#

我说:

def self.up
  MyTable.all.map{|x| do the stuff to ensure valid data}
  change_column :my_table, :my_field, :decimal, :precision => give whatever, :scale => give whatever
  
  end
  def self.down
   MyTable.all.map{|x| do the stuff to ensure valid data}
   change_column :my_table, :my_field, :decimal, :precision => give whatever, :scale => give whatever
  end

你可以重新计算或重新计算或平均值或任何东西,以确保您的需要。

相关问题