0

我的客户表中有contact_number 使用字段整数。我尝试在 rails c 中创建记录,但显然它无法存储更大的数字字段。我在网上环顾四周,我想我应该使用浮点数而不是整数,因为精度为 10 个数字,就像在美国一样

我的想法是创建一个新的迁移

class ChangeContactNumberInCustomerTableToFloatFromInteger < ActiveRecord::Migration
  def change_table 
    remove_column :customers, :contact_number, :integer
    add_column :customers, :contact_number, :float
  end
end

我如何指定精度,这是正确的方法吗?

4

2 回答 2

6

首先,如果我是正确contact_number的电话号码,您将需要使用字符串而不是数字字段。电话号码与其说是数字值,不如说是数字的集合。或者更一般地说,它们是字符的集合,恰好仅限于数字。

此外,如果相关的话,解析区号和国家/地区代码也会更容易(但是假设您确实需要解析国家/地区代码,无论如何您都希望将它们存储在单独的列中,但这是不同的讨论)

要直接回答您的问题,请改用该change_column方法,如下所示:

change_column :customers, :contact_number, :string

详情可在此处找到:http: //api.rubyonrails.org/classes/ActiveRecord/Migration.html

于 2013-08-13T19:10:30.340 回答
2
limit Sets the maximum size of the string/text/binary/integer fields
precision Defines the precision for the decimal fields
scale Defines the scale for the decimal fields
polymorphic Adds a type column for belongs_to associations

这是一个例子:

class AddDetailsToProducts < ActiveRecord::Migration
  def change
    add_column :products, :price, precision: 5, scale: 2
    add_reference :products, :user, polymorphic: true, index: true
  end
end

来自文档: http: //guides.rubyonrails.org/migrations.html

以下是您的栏目可以接受的归档类型:

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html#method-i-column

于 2013-08-13T19:10:53.763 回答