2011-12-16 6 views
0

のすべてのコンテンツを削除します。列の名前が変更され、それらの列のデータがそこにあります。しかし、私はrake db:drop、create、migrateを実行すると列の名前が変更され、それらの列のデータはなくなります...(マイグレーションファイルの1つがデータベースを満たし、名前が変更される前に)RENAME_COLUMNこんにちは、私はレールの移行の問題を持っている列

ここで問題は何ですか?

別の質問:以前の移行ファイルを変更するのは良い考えではありませんが、rake db:drop db:createとdb:migrateを実行すると問題ありませんか?

私の移行ファイルの順序は以下の通りです:

add_devise_to_users - >列を追加し、テーブル全体に

class AddColumnsToDefaultUser < ActiveRecord::Migration 
    def change 
    add_column :users, :name, :string 
    add_column :users, :dob, :date 
    add_column :users, :address, :string 
    add_column :users, :hotel_stars, :integer 
    add_column :users, :restaurant_stars, :integer 
    add_column :users, :profile_picture_url, :string 
    add_column :users, :selected_car, :integer 

    User.reset_column_information 

    User.find(1).update_attributes!(:name => 'Alexander MacDonald', :dob => '1984-08-20', :address => '900 Highschool Way, Mountain View, CA 94041', :hotel_stars => '3', :restaurant_stars => '2', :profile_picture_url => 'user1.png', :selected_car => 1) 

    end 
end 

を更新し、

をRENAME_COLUMN - >は、テーブルのユーザー

add_columns_to_default_userを作成します

class RenameColumn < ActiveRecord::Migration 
    def change 
    rename_column :users, :hotel_stars, :rating_stars 
    rename_column :users, :restaurant_stars, :price_stars 
    end 
end 
+2

データベースを削除すると、もちろんデータはなくなります。 –

+0

私のマイグレーションファイルの1つがデータベースを満たし、これらの2つの列をも満たします。しかし、名前を変更した後、それらの2つの列のデータがなくなった –

+4

私はデータベースを埋めるためにseed.rbを使用し、rake db:setupを使ってそれを作成してフィードするべきだと思います。それはあなたのやり方では問題ではありませんが、もっと正しいと思います。 –

答えて

1

db:dropを実行すると、DBが消去されます。

だから、あなたは何時にデータが消去されていること。そのデータは一時的に再挿入されることはありません。 db:dropの前後にあるDBにあるデータを保持したい場合は、どこかに格納し直してください。

あなただけの構造を変更している場合は、あなたがすでにそこにいたデータを削除する特別な理由がない限り、すべてを行う必要がdb:migrateです。

代わりにあなたが空にするためにpopulatorのようなものを使用することができます/移行後のテストデータをあなたのDBを埋めます。

+0

データが消去されるのは知っていますが、マイグレーションファイルの1つがテーブルを満たしていますが(動作します)、2列の名前変更後に2つの列が空になります... –

+0

そして、 )カラムの名前が変更されたことを考慮し、(2) 'db:drop'の後に実行しますか? – jefflunt

+0

テーブルの内容を埋める移行ファイルは、新しい列名についてはわかりません。古い移行ファイルのコードを変更することは、移行の仕組みではありません。私は列を埋めるその移行ファイルに何も変更しませんでした。しかし、あなたは私の質問の上で注文を見直すことができます。あなたの助けをありがとう –

関連する問題