база данных рельсов, создающая двойную запись - PullRequest
0 голосов
/ 02 ноября 2010

Я использую приспособления для предварительного заполнения своей базы данных некоторой информацией, чтобы я мог уничтожить базу данных и быстро переделать ее во время тестирования.

Теперь, когда я создаю новую запись в базе данных, используя мое приложение railsон создает две строки с одинаковой информацией и помечает одну из них меткой времени, как если бы она была создана с помощью прибора.

Вот несколько строк из базы данных

| 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, он был добавлен для значения method_id 1 дважды, по-видимому, один раз во время первоначальной настройкии однажды, когда я действительно это сделал.

Этих задач нет в фикстурах, я не добавлял их в базу данных до первоначальной загрузки.

1 Ответ

0 голосов
/ 02 ноября 2010
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 он работал нормально.

...