我使用字段整数在customers表中有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
如何指定精度,这是正确的方法吗?
答案 0 :(得分:6)
首先,如果我说contact_number
是电话号码是正确的,您将需要使用字符串而不是数字字段。电话号码不是数字值,因为它们是数字的集合。或者更一般地说,它们是一组角色,恰好仅限于数字。
此外,解析区号和国家/地区代码也会更容易,如果这是相关的(但假设您需要解析国家/地区代码,则无论如何都要将它们存储在不同的列中,但是这是一个不同的讨论)
要直接回答您的问题,请改用change_column
方法,如下所示:
change_column :customers, :contact_number, :string
此处的详细信息:http://api.rubyonrails.org/classes/ActiveRecord/Migration.html
答案 1 :(得分: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
以下是您的列可以接受的归档类型: