我正在使用灯具预先填充我的数据库中的一些信息,因此我可以杀死数据库并在测试期间快速重新制作。
现在,当我使用我的rails应用程序在数据库中创建一个新条目时,它创建了两行,其中包含相同的信息,并为其中一个创建时间戳,就好像它是使用fixture创建的一样。
这是数据库中的一些行
| task_id | procedure_id | created_at | updated_at |
+---------+--------------+---------------------+---------------------+
| 13 | 8 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 23 | 5 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 7 | 6 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 3 | 8 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 7 | 5 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 27 | 6 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 21 | 8 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 21 | 7 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 38 | 8 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 38 | 7 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 37 | 8 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 5 | 8 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 37 | 7 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 5 | 7 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 30 | 5 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 3 | 7 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 41 | 2 | 2010-11-01 23:44:15 | 2010-11-01 23:44:15 |
| 41 | 3 | 2010-11-01 23:44:15 | 2010-11-01 23:44:15 |
| 41 | 4 | 2010-11-01 23:44:15 | 2010-11-01 23:44:15 |
| 42 | 1 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 42 | 1 | 2010-11-01 23:45:11 | 2010-11-01 23:45:11 |
| 43 | 1 | 2010-11-01 23:40:32 | 2010-11-01 23:40:32 |
| 43 | 1 | 2010-11-01 23:51:16 | 2010-11-01 23:51:16 |
正如你所看到的那样,23:40:32时间是灯具更新数据库的时间。
请注意最后两组条目,其中task_id为42和43,已为procedure_id 1添加两次,一次是在初始设置期间,一次是在我实际执行时。
这些任务不在灯具中,直到初始加载后我才将它们添加到数据库中。
答案 0 :(得分:-1)
for procedure in @task.procedures
@procedureTask = ProceduresTask.new()
@procedureTask.procedure_id = procedure.id
@procedureTask.task_id = @task.id
@procedureTask.save
end
应该是:
for procedure in @task.procedures
@procedureTask = ProceduresTask.new()
@procedureTask.procedure_id = procedure.id
@procedureTask.task_id = @task.id
end
同时使用.new和.save创建两个条目?我以为.new没有保存到数据库,但是在删除.save之后它运行正常。