Rails删除连接表中的记录

时间:2013-07-31 11:07:13

标签: ruby-on-rails console

我有两个相关的表,'发布'和& 'tracks'分别包含字段'name'和'isrc'。

当release.name等于某个值时,我试图从数据库中删除所有曲目,例如“Thriller”。

这里的关系是'track'属于'release'和'release'has_many'tracks'。

任何人都可以帮我了解如何在Rails控制台中实现这一目标吗?

2 个答案:

答案 0 :(得分:1)

在您的发布模型中:

has_many :tracks, dependent: :destroy

当您销毁版本时,这将删除与数据库中的版本关联的所有曲目。

您可以通过在控制台中执行此类操作来测试此操作

release = Realse.where(name:"Thriller").first
release_id = release.id
release.destroy
tracks = Track.where(release_id:release_id)

变量曲目现在应为空。

答案 1 :(得分:0)

应该有效:

Track.delete_all("release_id in ?", Release.select("id").where(name: 'Thriller'))

由于