我将公司的应用程序从Rails 5.2.1更新到了Rails 5.2.2.1。在更新后运行我们的测试套件时,我遇到了在模型范围内验证唯一性的问题,特别是将模型附加到另一个模型的ActiveRecord关系时。例如,在我们的应用程序中,如果我要进行@person.cars << @car
,我们将运行唯一性验证(validates :car_id, uniqueness: { scope: :group_id }
。即使在@person.cars
最初为空的情况下,我们的更新后分支这些唯一性检查会在我们的master分支(更新前)上起作用,而在我们的update分支(更新后)上不起作用,除了从5.2更新Rails之外,没有对应用程序进行任何其他更改.1至5.2.2.1。我想知道是否有人知道与Rails 5.2.2.1唯一性验证相关的任何现有错误或问题,我已经浏览了Rails和ActiveRecord的变更日志,以及其他一些依赖关系已更新,但我一直找不到任何东西。
答案 0 :(得分:0)
看起来这是Rail的ActiveRecord::Associations
中所做的更改的一个问题,该更改用于在附加到ActiveRecord关联时删除5.2.1版中的重复项。这绝不会引发RecordInvalid异常,因为重复项将被事先删除。在5.2.2.1中,它似乎已被删除,并且附加到关联的所有重复项都将不再被抢先删除(最有可能模仿Ruby + =功能)。我必须将您对+ =的所有使用更改为与| =的关系,以确保不再添加重复项。
很抱歉,您无法发布任何代码或堆栈跟踪。堆栈跟踪是针对特定应用程序的,根本就没有帮助,并且代码是专有的。感谢帮助!