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