【发布时间】:2009-11-16 11:28:09
【问题描述】:
我对 Ruby on Rails 还很陌生。
我提供了 2 个迁移文件。第一个以 001 为前缀,创建一个表和该表的一些列。下一个以 002 为前缀的迁移文件将行插入到文件 001 中创建的表中。
运行迁移(命令行中的 rake db:migrate)会正确创建表,但不会插入任何有问题的数据。插入的代码如下所示(除了更多 Student.create 语句,
class AddStudentData < ActiveRecord::Migration
def self.up
...
Student.create(:name => "Yhi, Manfredo", :gender => "M")
...
end
def self.down
Student.delete_all
end
end
我的理解是Student是一个模型对象,所以我的Student模型是这样的,
class Student < ActiveRecord::Base
end
我是否需要在 Student 中显式定义一个 create 方法,或者这是给定的东西? (这个项目是用脚手架做的)
谢谢。
编辑 1:我使用了 Damien 的建议并调用了 create! 而不是 create,但得到了相同的响应。然后我所做的就是看看代码是否达到了那么远,就是这样,
Student.create12312313!(:name => "foo", :gender => "M")
这显然是无效的代码,迁移没有抛出任何错误。
Edit2:找到答案。 schema_migrations 表的版本设置为 3,而我只有 3 个不同的迁移文件,因此它从未运行过我拥有的任何迁移文件。这就是为什么什么都没有更新,而且我使用的虚假创建从未抛出错误。第一次没有插入学生数据的原因是因为数据库中已经有某个表,并且在我第一次迁移时引起了冲突。所以我真正要找的不是db:migrate,而是db:reset 花了好几个小时。
【问题讨论】: