2011-12-26 150 views
3

當我運行默認大小

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 

這是否意味着我只能保留最多隻有9999條記錄? (我很驚訝,按鍵的默認大小是多少)。如何將默認ID更改爲現有表中的7位數字?

謝謝。

回答

2

雖然MySQL客戶端的describe命令確實使用顯示寬度(見docs),則很可能是由產生在OP的提問模式的信息,使用每個限制屬性annontate_models gemget_schema_info方法柱。極限屬性是字節數:二進制和:整數列(請參閱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 
2

Rails的,其實就是4個字節在這裏,也就是標準的MySQL整數類型(見docs

+0

你是對的。我相應地編輯了我的答案。 – maprihoda 2011-12-26 18:53:44