在运行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).