rails数据库创建双重条目

时间:2010-11-02 01:11:20

标签: ruby-on-rails database fixtures

我正在使用灯具预先填充我的数据库中的一些信息,因此我可以杀死数据库并在测试期间快速重新制作。

现在,当我使用我的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添加两次,一次是在初始设置期间,一次是在我实际执行时。

这些任务不在灯具中,直到初始加载后我才将它们添加到数据库中。

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之后它运行正常。