2015-04-17 43 views
0

我創建像如何輸入在軌道的較大的整數的值(大於10位)

rails g model Office name:string location:string phone_no:integer 

然後,模型,如果我給值phone_no的10位數字它示出了像

ActiveRecord::StatementInvalid: Mysql2::Error: Out of range value for column

一個ERROR

我如何給超過10位數字?

那麼我該如何克服這個問題....!

回答

1

整數(4個字節)具有最大值範圍:

-2147483648 -> 2147483647 
0 -> 4294967295 (unsigned) 

您收到此錯誤,由於溢出。你可以用bigint來代替,它有8個字節,你應該沒問題。

-9223372036854775808 -> 9223372036854775807 
0 -> 18446744073709551615 (unsigned) 
0

如果您正在使用mysql那麼你可以使用bigint這樣的:

change_column :user, :mobile, :int8, :limit => 8 

limit => 8將使BIGINT。

希望這會有所幫助。

+0

我使用「change_column:model,:col,:double」。這適用於MySQL數據庫(但我希望項目使用了postgres)。 – JosephK

3

我一直在數據庫中使用string類型列來存放電話號碼。如果您出於某種原因需要具有整數值,但通常不需要,則可以隨後在其上調用.to_i

優點是你可以有一個+字符在它的表單域定義區域代碼。

缺點是你可能需要驗證表單中字段的數字性。

+2

也適用於領先的'0'和類似的 –

+2

+1,因爲這是電話號碼或其他類型的數字有數字,但實際上沒有用於某種計算的最佳做法。 – Slicedpan

+0

我同意電話號碼在概念上是一個恰好包含數字的字符串,應該表示爲這樣。 – Drenmi

相關問題