0

在我的 ROR 项目中,我遇到了一个问题。该项目的先前开发人员已将一组数据保存到特定字段的单个列中。但现在我必须获取这些数据并将其保存到另一个具有当前表 ID 的单独表中。以下是我从数据库获取详细信息的代码:

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

      end
    end

我想要的是我必须将p.idand保存barrier到一个新表中,并且必须在迁移文件中进行。因此,当迁移运行时,它将从中获取所有现有详细信息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 回答