Active Record - дублирующее значение атрибута даже при проверке - PullRequest
0 голосов
/ 05 июля 2018

У меня есть модель с проверкой уникальности на основе области (я использую Rails 5):

validates_uniqueness_of :n_pacote, scope: :ecg_id

Даже с этой проверкой я заметил, что дублируются n_pacote значения для одного и того же ecg_id. Я также заметил, что они были созданы почти одновременно:

[Thu, 05 Jul 2018 14:07:59 -03 -03:00, Thu, 05 Jul 2018 14:07:58 -03 -03:00, Thu, 05 Jul 2018 14:07:58 -03 -03:00]

Они созданы из вызова API, который может вызываться несколько раз. Как я могу это исправить? Заранее спасибо

EDIT: Вот все атрибуты для 3 записей, которые имеют одинаковое значение n_pacote для одного и того же ecg_id:

{"id"=>32289, "ecg_id"=>29, "leitura"=>[170, 69, 85, 81, 69, 85, 81, 69, 85, 81, 70, 102, 98, 70, 102, 98, 70, 102, 98, 71, 119, 115, 71, 119, 115, 71, 119, 115, 72, 136, 132, 72, 136, 132, 72, 136, 132, 73, 153, 149, 73, 153, 149, 73, 153, 149], "posprocessada"=>nil, "created_at"=>Thu, 05 Jul 2018 14:07:59 -03 -03:00, "updated_at"=>Thu, 05 Jul 2018 14:07:59 -03 -03:00, "n_pacote"=>1620}
{"id"=>32276, "ecg_id"=>29, "leitura"=>[170, 69, 85, 81, 69, 85, 81, 69, 85, 81, 70, 102, 98, 70, 102, 98, 70, 102, 98, 71, 119, 115, 71, 119, 115, 71, 119, 115, 72, 136, 132, 72, 136, 132, 72, 136, 132, 73, 153, 149, 73, 153, 149, 73, 153, 149], "posprocessada"=>nil, "created_at"=>Thu, 05 Jul 2018 14:07:58 -03 -03:00, "updated_at"=>Thu, 05 Jul 2018 14:07:58 -03 -03:00, "n_pacote"=>1620}
{"id"=>32256, "ecg_id"=>29, "leitura"=>[170, 69, 85, 81, 69, 85, 81, 69, 85, 81, 70, 102, 98, 70, 102, 98, 70, 102, 98, 71, 119, 115, 71, 119, 115, 71, 119, 115, 72, 136, 132, 72, 136, 132, 72, 136, 132, 73, 153, 149, 73, 153, 149, 73, 153, 149], "posprocessada"=>nil, "created_at"=>Thu, 05 Jul 2018 14:07:58 -03 -03:00, "updated_at"=>Thu, 05 Jul 2018 14:07:58 -03 -03:00, "n_pacote"=>1620}

1 Ответ

0 голосов
/ 05 июля 2018

Я столкнулся с подобной проблемой, но позже я использовал уникальность уровня БД, чтобы избежать этого. Проверка Rails не является надежной на 100%, когда дело доходит до уникальности.

Чтобы быть на более безопасной стороне, добавьте эту проверку в свою базу данных (MySQL ex).

add_index :table_name, [:n_pacote, :ecg_id], unique: true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...