0

フィールド整数を使用して、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

精度を指定するにはどうすればよいですか?これは正しい方法ですか?

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 に答える