2010-12-28 11 views
0

これは関連をめちゃくちゃにせずにデータをプリロードデータが2回目にロードされている

User 
belongs_to :computer 

Computer 
has_many :user 

ユーザーは、人々がウェブサイト上でアカウントを登録したときに作成されますが、コンピュータが事前にロードされたデータでいるように私のモデルがどのように見えるかです私はseeds.rb/some .rakeファイルで作成します。アプリが最初に起動され、人々が登録を開始して適切なcomputer_idに関連付けられると、すべてがうまくいきます。しかし、私はリストユーザーテーブル内COMPUTER_IDは、コンピュータのテーブル内の古いIDを参照するためrakefileに意志台無し団体の周りに二回目を実行している

Computer.destroy_all 
Computer.create({:name => "Akane"}) 
Computer.create({:name => "Yoda"}) 
Computer.create({:name => "Mojito"}) #newly added 

に別のコンピュータを追加するとします。上記のスクリプトを実行しているので、コンピュータテーブル内のIDは、ユーザーが持つ関連性に関係なく増分し続けます。すべてのユーザーは現在、コンピュータへの参照を持たず、すべてのコンピュータに新しいIDが追加されます。

質問:私の関連付けを台無しにしないで、データをあらかじめロードする方がいいですか?私はユーザーのテーブルを破壊することなく新しいコンピュータを追加できるようにしたい。コンピュータの表を破棄しても問題はありませんし、もう一度再構築していますが、既存のユーザーが持っている古い関係はそのまま残っていなければなりません。

答えて

0

コンピュータテーブルの移行を実行していると思いましたか?

はあなたの移行のと呼ばれるデシベル/ destroyメソッドを削除種子から/ 1_create_computers.rb

$ rake db:migrate:down version=1 

を移行言うことができます。 あなたは常に、ユーザーテーブル...あなたが列を持っている必要があります方法によっているを維持したいCOMPUTER_ID

そしてもちろん関連が行く

ComputerClass < ActiveRecord::Base 
     has_many :users #(don't forget the 's') 
    end 
関連する問題