ActiveRecord:依赖混淆

时间:2011-06-24 15:54:31

标签: ruby activerecord

我定义了以下AR模型:

class Venue < ActiveRecord::Base
  has_many :events
end

class Act < ActiveRecord::Base
  has_many :events
end

class Event < ActiveRecord::Base
  belongs_to :venue
  belongs_to :act
end

我想要的是如果我删除Venue或Act,任何相关的事件也会被删除。但是如果我删除了一个事件,则不会删除相关的场地和法案。我尝试了各种:dependent变体,但似乎没有任何效果。

这看起来很简单。我错过了什么?

2 个答案:

答案 0 :(得分:1)

这对我有用。删除场地/法案会删除它所拥有的所有事件,而删除事件对它所属的场地/法案没有影响。

class Venue < ActiveRecord::Base
  has_many :events, :dependent => :destroy
end

class Act < ActiveRecord::Base
  has_many :events, :dependent => :destroy
end

class Event < ActiveRecord::Base
  belongs_to :venue
  belongs_to :act
end

答案 1 :(得分:1)

我弄明白了这个问题。我不得不在父对象上调用destroy而不是delete。文档并没有真正说清楚。