Ruby on rails Rails迁移-整数列仅包含';1';

Ruby on rails Rails迁移-整数列仅包含';1';,ruby-on-rails,ruby-on-rails-3,migration,Ruby On Rails,Ruby On Rails 3,Migration,在rails项目中,我们试图将数据从一个表迁移到另一个表。创建原始表时,我们使用(代码段): 然后,当我们创建要迁移到的第二个表时,我们使用: create_table :my_second_table do |t| #OTHER COLUMNS HERE t.integer :my_pub end 最后,在迁移实际数据时,我们使用: original_value = MyOriginalTable.all original_value.each do |s| new_first_

在rails项目中,我们试图将数据从一个表迁移到另一个表。创建原始表时,我们使用(代码段):

然后,当我们创建要迁移到的第二个表时,我们使用:

create_table :my_second_table do |t|
  #OTHER COLUMNS HERE
  t.integer :my_pub
end
最后,在迁移实际数据时,我们使用:

original_value = MyOriginalTable.all
original_value.each do |s|
  new_first_record = MySecondTable.new
  #OTHER DATA MIGRATIONS HERE
  new_first_record.my_pub = s.first_record_pub
  new_first_record.save
end
我们迁移的所有其他列(我注释掉的列)都可以完美地迁移。但是,在迁移的my_second_表中,my_pub列的某些项为空(预期,因为原始表中的某些项为空),而其他项的值仅为“1”。由于某些原因,未正确迁移正确的第一个\u记录\u发布值

有人对如何解决这个问题有什么想法吗?
谢谢

您是否都在创建一个新列,并尝试在同一迁移中将数据移动到该列中?如果是这样,您可能需要在创建列和将数据移动到列之间调用,或者,将数据的创建和移动分为两个独立的迁移。

否,以上三个语句都在独立的迁移中。还有其他想法吗?谢谢。那么,验证没有失败,对吗?因此,如果要将
new\u first\u record.save
更改为
new\u first\u record.save迁移仍在运行而未中止,对吗?是否有不匹配的列类型?例如,您是否正在将数据从
布尔值
复制到
整数
列(或可能删除数据的其他跨列类型)?我的意思是,我可以看到上面的伪代码,即在两个位置都使用
integer
,但是您是否仔细检查了/actual/代码以确认它不是这样的?是的,它没有失败,但在字段中输入了错误的数字。我已经检查了列类型-都是整数。谢谢,我不确定。我建议回应Dana先生在评论中的建议,以确保迁移通过了健全性检查,并可能发布您的实际迁移代码。也许在注释的代码中有一些东西在无意中修改了中间的东西。尝试输出<代码> S.Sux.<代码>以验证它实际上有一个<代码> FrestyReordOrdPub<代码>不是1。另外,在分配
my_pub
值后,请尝试输出
new_first_record
的结果,以验证它是否设置为
s
first_record_pub
值。只是一个小的健全性检查,但它可以帮助您指出正确的方向。@Dana先生,我如何在迁移中输出s.inspect的结果?我应该使用什么代码?非常感谢。如果您只需键入
put s.inspect
或(捷径)
ps
,那么当您尝试运行迁移时,您将获得输出到控制台的信息。@MrDanA-我输入了“put s.inspect”,并收到来自第一个表的所有数据库值的列表。奇怪的是,第一个\u记录\u pub值出现并正确读取!那些没有值的将被归为nil(我认为应该是这样),那些在s.inspect语句中有值的将被归为正确的值,而在新的\u first\u record.inspect语句中的将被归为1。这太荒谬了!有什么想法吗?!
original_value = MyOriginalTable.all
original_value.each do |s|
  new_first_record = MySecondTable.new
  #OTHER DATA MIGRATIONS HERE
  new_first_record.my_pub = s.first_record_pub
  new_first_record.save
end