我有一个电影及其相关类型的数据库。
class Genre < ActiveRecord::Base
has_many :movie_genres
has_many :movies, through: :movie_genres, dependent: delete_all
before_destroy :delete_movie
private
def delete_movie
self.movies.delete_all
end
end
class Movie < ActiveRecord::Base
has_many :movie_genres
has_many :genres, through: :movie_genres
end
我的目标是当一个类型被删除时 - 它的所有电影也会被删除,无论该电影是否有其他类型。我尝试将依赖:: destroy添加到Genre模型但是只有连接表记录被删除。我还尝试使用before_destroy回调删除电影,然后再删除类型,但这似乎也不起作用。
答案 0 :(得分:0)
试试:destroy_all
。
destroy_all
将删除此对象和所有关联对象。对于大数据,这可能会很慢。
另见:delete_all vs destroy_all?
答案 1 :(得分:0)
我认为您只需选择适用列的记录,然后在其上调用destroy_all
。我错过了什么吗?
Movie.where(movie_genre: @movie.movie_genre).destroy_all