Ruby on rails 3.2 Dependent::销毁导致postgresql错误
奇怪的是,如果我质疑:Ruby on rails 3.2 Dependent::销毁导致postgresql错误,ruby-on-rails-3.2,postgresql-9.3,Ruby On Rails 3.2,Postgresql 9.3,奇怪的是,如果我质疑: Accdist Load (27.3ms) SELECT "accdists".* FROM "accdists" WHERE "accdists"."id" = $1 LIMIT 1 [["id", "1"]] Accdistlavorazione Load (20.2ms) SELECT "accdistlavoraziones".* FROM "accdistlavoraziones" WHERE "accdistlavoraziones"."accdis
Accdist Load (27.3ms) SELECT "accdists".* FROM "accdists" WHERE "accdists"."id" = $1 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"."" = $1 [[nil, nil]]
PG::SyntaxError: ERROR: zero-length delimited identifier at or near """"
LINE 1: ...OM "accdistlavoraziones" WHERE "accdistlavoraziones"."" = $1
^
: DELETE FROM "accdistlavoraziones" WHERE "accdistlavoraziones"."" = $1
(0.1ms) ROLLBACK
Completed 500 Internal Server Error in 155.3ms
正在返回有效的结果
为什么内部机制会导致postgresql处理nil?对于遇到这种情况的人,可能会发生以下情况。
-通过rails快捷方式创建联接表
has\u和\u-belown\u-many
-意识到你以后需要一个
有很多。。。通过:
设置-创建新连接记录的过程实际上是在运行。。。因为正在引用
[…]\u id
。–删除时间到了,您正在查找联接表的id,当然是
nil
谢谢!我向联接表添加了一个主键,它解决了这个问题:添加列:联接表名称,:id,:主键
(在迁移中)
Accdist Load (27.3ms) SELECT "accdists".* FROM "accdists" WHERE "accdists"."id" = $1 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"."" = $1 [[nil, nil]]
PG::SyntaxError: ERROR: zero-length delimited identifier at or near """"
LINE 1: ...OM "accdistlavoraziones" WHERE "accdistlavoraziones"."" = $1
^
: DELETE FROM "accdistlavoraziones" WHERE "accdistlavoraziones"."" = $1
(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