0

私のRORプロジェクトで、問題が発生しました。プロジェクトの以前の開発者は、特定のフィールドの単一の列にデータの配列を保存しました。しかし今、私はそれらのデータを取得し、それを現在のテーブルIDで別の別のテーブルに保存する必要があります。以下は、dbから詳細を取得するための私のコードです。

@ar = AResponse.select("id, selected_barriers");
    @ar.each do |p|
      p.selected_barriers.each do |barrier|

      end
    end

私が欲しかったのは、p.idbarrierを新しいテーブルに保存する必要があり、それを移行ファイルで実行する必要があることです。したがって、移行が実行されると、既存の詳細がすべて取得AResponseされ、新しいものに保存されます。移行ファイルのみで実行できますか?もしそうなら、どうすればそれを行うことができますか?

これは私の完全なコードです

試しましたが、機能しません:以下は私のコードです

class AnalysisBarriers < ActiveRecord::Migration
  def self.up

  end

  def change
    create_table :analysis_barriers do |t|
      t.integer :analysis_response_id, :null => false
      t.string :barrier
    end
    @analysis_response = AnalysisResponse.select("id, selected_barriers");
    @analysis_response.each do |p|
      p.selected_barriers.each do |barrier|
        AnalysisBarriers.create(:analysis_response_id => p.id, :barrier => barrier)
      end
    end
  end
  def self.down
    drop_table :analysis_barriers
  end
end

ありがとう

4

1 に答える 1

1

はい、移行後にデータを変更できます。実行したいデータ変更が何であれ、変更​​機能またはアップ機能で実行できます。次の例を見てください

class Event < ActiveRecord::Migration
  def change
    create_table events do |t|
      t.datetime :starts_at
      t.datetime :ends_at
      t.timestamps
    end
    Event.create(:starts_at => Time.now, :ends_at => Time.now+1)
  end
end

上記のステートメントは、テーブルの作成直後にデータをテーブルに追加します。

于 2012-09-11T06:19:59.313 に答える