Rails表中整数的默认大小(MySQL)
作者:互联网
当我跑步
rails g model StripeCustomer user_id:integer customer_id:integer
annotate
我有
# == Schema Information
# Table name: stripe_customers
# id :integer(4) not null, primary key
# user_id :integer(4)
# customer_id :integer(4)
# created_at :datetime
# updated_at :datetime
这是否意味着我最多只能保存9,999条记录? (我很惊讶密钥的默认大小多么小).如何在现有表格中将默认ID更改为7位数字?
谢谢.
解决方法:
虽然mysql客户端的describe命令确实使用显示宽度(请参见docs),但OP问题中的模式信息很可能由annontate_models gem的get_schema_info方法生成,该方法使用每一列的limit属性. limit属性是:binary和:integer列的字节数(请参见docs).
该方法读取(请参阅最后一行如何添加限制):
def get_schema_info(klass, header, options = {})
info = "# #{header}\n#\n"
info << "# Table name: #{klass.table_name}\n#\n"
max_size = klass.column_names.collect{|name| name.size}.max + 1
klass.columns.each do |col|
attrs = []
attrs << "default(#{quote(col.default)})" unless col.default.nil?
attrs << "not null" unless col.null
attrs << "primary key" if col.name == klass.primary_key
col_type = col.type.to_s
if col_type == "decimal"
col_type << "(#{col.precision}, #{col.scale})"
else
col_type << "(#{col.limit})" if col.limit
end
#...
end
标签:activerecord,primary-key,ruby,ruby-on-rails,mysql 来源: https://codeday.me/bug/20191101/1986983.html