0

我正在处理从 Rails 4 -> Rails 5 升级后行为变化引起的错误。

在模型上,我们有一个这样声明的 has_many 关联:

has_many :things, foreign_key: :special_id, primary_key: :special_id

special_id父模型上的字段为零时,就会出现问题。在 Rails 4 中,该场景产生以下查询:

SELECT * FROM "things" WHERE "things"."special_id" = $1  [["special_id", nil]]

返回零记录。(即在 NULL 外键上不匹配)

在 Rails 5 中,查询变为:

SELECT * FROM "things" WHERE "things"."special_id" IS NULL

它返回事物表中的每条记录,并带有 NULL special_id。(即在 NULL 外键上匹配)

现有模型的回调期望具有 NULL special_id 的模型具有零 :things 与之关联。是否有构建此关联的选项或替代方法,它将省略 foreign_key 字段中具有 NULL 的子记录?

4

0 回答 0