找不到带有"id"=all 的表 Rails 4.2.6 中的迁移错误



在运行rake db:migrate:

时出现以下错误

standderror:发生了一个错误,这次和以后所有的迁移都被取消了:

找不到'id'=all [WHERE "reports"]的报告。"deleted_at"为NULL]

这是我的2个迁移文件:

Class AddColorToReports < ActiveRecord::Migration
  def self.up
    add_column :reports, :button_color, :string
    Report.find(:all).each do |r|
      r.update_attribute(:color, r.top_stroke_color)
    end
  end
  def self.down
    remove_column :reports, :button_color
  end
end

class AddDeletedAtToReport < ActiveRecord::Migration
  def change
    add_column :reports, :deleted_at, :datetime
  end
end

在运行rails 3.2和4.0时,迁移是正常的,但在4.2.6中,不工作。

请告诉我如何解决这个问题?

查看版本> 4.0的find方法的文档:

Find by id -这可以是一个特定的id(1),一个id列表(1),5, 6),或者一个id数组([5,6,10])。如果找不到记录所有列出的id,然后将引发RecordNotFound。如果主键是一个整数,通过id强制它的参数使用to_i .

for version <4.0:

Find使用四种不同的检索方法:

  • 通过id查找-这可以是一个特定的id (1), id列表(1),5, 6),或者一个id数组([5,6,10])。如果找不到记录所有列出的id,然后将引发RecordNotFound。
  • Find first -这将返回与选项匹配的第一个记录使用。这些选项可以是特定的条件,也可以只是一个秩序。如果没有可以匹配的记录,则返回nil。使用模型。find(:first, *args)或其快捷方式Model.first(*args).
  • Find last -这将返回与选项匹配的最后一条记录使用。这些选项可以是特定的条件,也可以只是一个秩序。如果没有可以匹配的记录,则返回nil。使用模型。find(:last, *args)或其快捷方式Model.last(*args).
  • Find all -这将返回与选项匹配的所有记录使用。如果没有找到记录,则返回一个空数组。使用模型。查找(:all, *args)或其快捷方式Model.all(*args).

最新更新