如何将列类型从整数更改为小数,并在小数点后添加一个字母?

Max*_*xxx 2 activerecord ruby-on-rails rails-migrations ruby-on-rails-6

我刚刚意识到我的列类型需要是小数而不是整数

我可以直接在 seeds.rb 中进行更改吗?还是我应该做其他事情?

另外,如果我打算在小数点后添加一个字母,我该怎么做?

例子: 2.0L, 2.5L, 5.7L, etc.

Mar*_*ark 7

如果您想在数据库中存储字母,则该列类型不能是小数或整数。字符串字段更适合您的情况。我假设你的主要问题是关于小数的。

如果您确实想更改数据库中的列类型,则应该使用Migrations来完成。在终端的应用程序目录中,运行bin/rails g migration changeFieldNameFromIntegerToDecimal

这将生成一个文件名中带有时间戳的迁移文件,其中有一个更改方法告诉rails您要如何更改数据库。在该更改方法中,输入:

def change
  change_column :table_name, :column_name, :decimal, precision: :8, scale: :2
end
Run Code Online (Sandbox Code Playgroud)

精度和比例选项执行以下操作(来自上面的链接):

precision:定义小数字段的精度,表示数字中的总位数。

比例:定义小数字段的比例,表示小数点后的位数。

如果要将其转换为字符串,则迁移文件将包含:

def change
  change_column :table_name, :column_name, :string
end
Run Code Online (Sandbox Code Playgroud)

最后bin/rails db:migrate从应用程序目录中的终端运行以执行迁移。