dependant: :destroy 导致 postgresql 错误
dependant: :destroy leading to postgresql error
class Accdist < ActiveRecord::Base
has_many :accdistlavoraziones, dependent: :destroy
删除 accdist 时,控制台输出以下内容:
Accdist Load (27.3ms) SELECT "accdists".* FROM "accdists" WHERE "accdists"."id" = LIMIT 1 [["id", "1"]]
Accdistlavorazione Load (20.2ms) SELECT "accdistlavoraziones".* FROM "accdistlavoraziones" WHERE "accdistlavoraziones"."accdist_id" = 1
SQL (59.7ms) DELETE FROM "accdistlavoraziones" WHERE "accdistlavoraziones"."" = [[nil, nil]]
PG::SyntaxError: ERROR: zero-length delimited identifier at or near """"
LINE 1: ...OM "accdistlavoraziones" WHERE "accdistlavoraziones"."" =
^
: DELETE FROM "accdistlavoraziones" WHERE "accdistlavoraziones"."" =
(0.1ms) ROLLBACK
Completed 500 Internal Server Error in 155.3ms
奇怪的是,如果我查询:
Accdistlavorazione.where('accdist_id = ?', 1).count
(0.6ms) SELECT COUNT(*) FROM "accdistlavoraziones" WHERE (accdist_id = 1)
=> 10
正在返回有效结果。
为什么内部机制导致postgresql处理nil(s)?
对于遇到此问题的任何人,可能发生的情况如下。
- 通过 rails 快捷方式 has_and_belongs_to_many
创建连接 table
- 意识到您稍后需要 has_many ... through:
设置
- 在创建新的连接记录时突突突实际运行...因为 [...]_id
正在被引用。
– 删除时间到了,您正在寻找连接的 ID table,自然是 nil
class Accdist < ActiveRecord::Base
has_many :accdistlavoraziones, dependent: :destroy
删除 accdist 时,控制台输出以下内容:
Accdist Load (27.3ms) SELECT "accdists".* FROM "accdists" WHERE "accdists"."id" = LIMIT 1 [["id", "1"]]
Accdistlavorazione Load (20.2ms) SELECT "accdistlavoraziones".* FROM "accdistlavoraziones" WHERE "accdistlavoraziones"."accdist_id" = 1
SQL (59.7ms) DELETE FROM "accdistlavoraziones" WHERE "accdistlavoraziones"."" = [[nil, nil]]
PG::SyntaxError: ERROR: zero-length delimited identifier at or near """"
LINE 1: ...OM "accdistlavoraziones" WHERE "accdistlavoraziones"."" =
^
: DELETE FROM "accdistlavoraziones" WHERE "accdistlavoraziones"."" =
(0.1ms) ROLLBACK
Completed 500 Internal Server Error in 155.3ms
奇怪的是,如果我查询:
Accdistlavorazione.where('accdist_id = ?', 1).count
(0.6ms) SELECT COUNT(*) FROM "accdistlavoraziones" WHERE (accdist_id = 1)
=> 10
正在返回有效结果。
为什么内部机制导致postgresql处理nil(s)?
对于遇到此问题的任何人,可能发生的情况如下。
- 通过 rails 快捷方式 has_and_belongs_to_many
创建连接 table
- 意识到您稍后需要 has_many ... through:
设置
- 在创建新的连接记录时突突突实际运行...因为 [...]_id
正在被引用。
– 删除时间到了,您正在寻找连接的 ID table,自然是 nil