2017-05-26 13 views
-3

私はウェブサイトデータベースを作成しています。いずれかの列については、項目番号コードを整数として使用しました。数字のサイズを扱うことができないので、文字列として扱うほうがよいでしょう。しかし、私はすでに整数として設定しており、単にコード内で変更することはできません。これはどうすればいいですか?Rails:整数を文字列に変更する方法

これはマイグレーションファイルです。

class CreateInventories < ActiveRecord::Migration[5.1] 
    def change 
    create_table :inventories do |t| 
     t.string :product_name 
     t.string :brand_name 
     t.integer :item_id 
     t.integer :upc_code 
     t.string :color 
     t.string :department 
     t.string :size 
     t.string :condition 
     t.string :fabric_type 
     t.string :shipping_weight 
     t.string :sku 
     t.string :asin 
     t.integer :quantity 
     t.string :cost_price 
     t.string :sell_price 
     t.string :key_product_features 
     t.text :product_description 
     t.string :search_terms 
     t.string :status 
     t.string :listing_in_usa 
     t.string :listing_in_canada 
     t.string :listing_in_mexico 

     t.timestamps 
    end 
    end 
end 

upc_codeとitem_idの両方を文字列にしたいと考えています。どうすれば始めることができますか?

[OK]を

ので、新しいファイルに私のコードは

class UpdateColumn < ActiveRecord::Migration[5.1] 
    def change 
    change_table :inventories do |t| 
     t.change :upc_code, :string 

    end 
    end 
end 

ですが、私は

のActiveRecord :: PendingMigrationError移行

が保留されているエラーが発生します。 にこの問題を解決するには、実行します。bin /レールDBを:RAILS_ENV =開発を移行

+0

このテーブルは進行中の作業ですか、それともどこにマスター/デプロイされたものにマージされていますか?既存のマイグレーションをローカルマシン上にのみ存在する場合を除いて編集することはめったにありません。 –

+0

は 'rails db:migrate'を実行します。そのため、ActiveRecord :: PendingMigrationError – UsamaMan

+0

を取得していますが、私はまだエラーが発生しています – Davidson

答えて

1

あなたがrails db:migraterake db:migrateを実行していない場合は、単に必要なものに移行内のデータ型を変更することができます。

... 
t.string :upc_code 
... 

item_idが、あなたはタイプを変更することはできませんInventoryItemとの間の関係を作る外部キーである場合が、それらは両方とも整数として一致している必要があります。その後、

$ rails generate migration update_columns 

そして、あなたは:

しかし、あなたはすでにdb:migrateコマンドを実行した場合、他の手に、あなたはそれらの属性の種類を変更するために、新しい移行を作成することができます。

ラン作成したファイルを編集してください:

class UpdateColumns < ActiveRecord::Migration 
    def change 
    change_table :inventories do |t| 
     t.change :upc_code, :string 
     ... 
    end 
    end 
end 

次に、rails db:migrateを再度編集してください。

+0

私はすでに移行を実行しました – Davidson

+0

私は最近、答えを更新しました。 –

+0

t.timestampsを含めるには? – Davidson

関連する問題