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

How do i change column type from integer to decimal, with a letter after the decimal?

我刚刚意识到我的列类型需要 decimal 而不是 integer

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

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

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

这会将列类型更改为十进制。要了解规模和精度,请查看这个 Whosebug 问题 or the docs https://edgeguides.rubyonrails.org/active_record_migrations.html#column-modifiers

change_column :table_name, :column_name, :decimal, :precision => 8, :scale => 2, :default => 0

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

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

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

def change
  change_column :table_name, :column_name, :decimal, precision: :8, scale: :2
end

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

precision: Defines the precision for the decimal fields, representing the total number of digits in the number.

scale: Defines the scale for the decimal fields, representing the number of digits after the decimal point.

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

def change
  change_column :table_name, :column_name, :string
end

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