销毁与Rails 4中的对象关联的所有记录

时间:2015-01-17 23:58:00

标签: ruby-on-rails

我有一个电影及其相关类型的数据库。

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回调删除电影,然后再删除类型,但这似乎也不起作用。

2 个答案:

答案 0 :(得分:0)

试试:destroy_alldestroy_all将删除此对象和所有关联对象。对于大数据,这可能会很慢。 另见:delete_all vs destroy_all?

答案 1 :(得分:0)

我认为您只需选择适用列的记录,然后在其上调用destroy_all。我错过了什么吗?

Movie.where(movie_genre: @movie.movie_genre).destroy_all