【问题标题】:Active Record - duplicate attribute value even with validationActive Record - 重复的属性值,即使有验证
【发布时间】:2018-07-05 17:17:11
【问题描述】:

我有一个基于范围的唯一性验证模型(我使用的是 Rails 5):

validates_uniqueness_of :n_pacote, scope: :ecg_id

即使进行了验证,我注意到相同的 ecg_idn_pacote 值是重复的。我还注意到它们几乎是同时创建的:

[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 调用创建的。我该如何解决?提前致谢

编辑: 以下是 3 条记录的所有属性,这些记录对于相同的 ecg_id 具有相同的 n_pacote 值:

{"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}

【问题讨论】:

  • 你能打印实际记录(包括所有属性)而不是只打印它们的 created_at 时间吗?
  • 是的,当然。会更新答案
  • 哪个数据库和模型是什么样的?特别是leitura 是如何处理的?您在数据库中是否有唯一性约束?你能在你的测试套件中重现这个问题吗?

标签: ruby-on-rails activerecord


【解决方案1】:

我遇到了类似的问题,但后来我使用了 db 级别的唯一性来避免这个问题。在唯一性方面,Rails 验证并非 100% 可靠。

为了更安全,请在您的数据库(MySQL ex)上添加此验证。

add_index :table_name, [:n_pacote, :ecg_id], unique: true

【讨论】:

  • 谢谢,在帖子上看到了类似的内容,我已经这样做了,但没有添加独特的分句。试试看
猜你喜欢
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
相关资源
最近更新 更多