我有两个关联的表,'releases' 和 'tracks' 分别包含字段 'name' 和 'isrc'。
当 release.name 等于某个值时,我试图从数据库中删除所有曲目,例如“Thriller”。
这里的关系是 'track' 属于一个 'release' 和一个 'release' has_many 'tracks'。
谁能帮助我如何在 Rails 控制台中实现这一点?
我有两个关联的表,'releases' 和 'tracks' 分别包含字段 'name' 和 'isrc'。
当 release.name 等于某个值时,我试图从数据库中删除所有曲目,例如“Thriller”。
这里的关系是 'track' 属于一个 'release' 和一个 'release' has_many 'tracks'。
谁能帮助我如何在 Rails 控制台中实现这一点?
在您的发布模型中:
has_many :tracks, dependent: :destroy
当您销毁一个版本时,这将从数据库中删除与该版本关联的所有轨道。
您可以通过在控制台中执行类似的操作来测试它
release = Realse.where(name:"Thriller").first
release_id = release.id
release.destroy
tracks = Track.where(release_id:release_id)
变量轨道现在应该是空的。
它应该工作:
Track.delete_all("release_id in ?", Release.select("id").where(name: 'Thriller'))
谢谢