我有一个名为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已关闭,但在连接表中有一个额外的主键似乎不应该只包含两个其他主键。
答案 0 :(得分:3)
这是因为你的连接表更像是has_many_and_belongs_to
这是您在表格中不需要id
列的唯一情况。在所有其他情况下,您需要定义primary-key
。默认为id
。
因此,您需要拥有此id
列,或者您需要定义类型和歌曲之间的关系,如has_many_and_belongs_to
关系。