【发布时间】:2015-03-16 08:11:43
【问题描述】:
我有一个电影及其相关类型的数据库。
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
我的目标是,当一种类型被删除时,它的所有电影也会被删除,无论该电影是否有另一种类型。我尝试将dependent: :destroy 附加到 Genre 模型,但是只有连接表记录被删除。我还尝试使用 before_destroy 回调在删除类型之前删除电影,但这似乎也不起作用。
【问题讨论】:
-
“只有连接表记录被删除”是什么意思?
-
当你使用delete_movie时到底发生了什么,它在哪种情况下不起作用?方法被调用了吗?它会生成 SQL 吗?
标签: ruby-on-rails