rails:dependent => :销毁错误 - 想要使用备用ID进行删除

时间:2010-06-24 06:53:58

标签: ruby-on-rails

我有一个名为Song的模型

has_many :genre_songs, :dependent => :destroy

我有一个连接模型GenreSong(带有genre_id和song_id),我希望在删除歌曲记录时销毁它。

看来rails正在GenreSong模型中寻找要删除的主键,因为我收到了这个错误:

 Mysql::Error: Unknown column 'id' in 'where clause': DELETE FROM `genre_songs` WHERE `id` = NULL

还有另一种方法可以做到这一点(我认为删除song_id就足够了)?通过指定应该执行删除的id。

也许我的SQL已关闭,但在连接表中有一个额外的主键似乎不应该只包含两个其他主键。

1 个答案:

答案 0 :(得分:3)

这是因为你的连接表更像是has_many_and_belongs_to

这是您在表格中不需要id列的唯一情况。在所有其他情况下,您需要定义primary-key。默认为id

因此,您需要拥有此id列,或者您需要定义类型和歌曲之间的关系,如has_many_and_belongs_to关系。