如何使用具有多对多关系的:dependent选项?

时间:2009-03-24 21:26:11

标签: ruby-on-rails ruby

我有这样的多对多关系:

class Event < ActiveRecord::Base
  has_many :calendar_events
  has_many :calendars, :through => :calendar_events
  # ...
end

我想这样做,以便当我调用some_event.destroy时,Ruby on Rails会删除calendar_events表中的关联记录。根据API文档,我假设你这样做......

class Event < ActiveRecord::Base
  has_many :calendar_events, :dependent => :delete_all
  has_many :calendars, :through => :calendar_events
  # ...
end

这是正确的方法吗?

2 个答案:

答案 0 :(得分:1)

是。这将仅删除所有日历事件。

答案 1 :(得分:1)

你也可以:destroy而不是:delete_all。但是,对于大型关联对象集,删除全部更快。

请参阅has_many上的Rails文档 http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#M001789