删除每个关系

时间:2012-05-10 14:50:55

标签: ruby-on-rails ruby ruby-on-rails-3

我有两个模型:EventLink

  • 活动has_many :links
  • 链接belongs_to :event

我想在调用events_controller.rb#destroy操作时删除所有相关链接。

这是破坏行动:

def destroy
  @event = Event.find(params[:id])
  @event.destroy

  links = @event.links

  for link in links do
    link.destroy
  end

  respond_to do |format|
    format.html { redirect_to :back }
    format.json { head :no_content }
  end
end

但它似乎没有起作用。我哪里错了?

1 个答案:

答案 0 :(得分:5)

停在那里,你不必重新发明这个轮子。 Rails为你做这件事。

在您的模型中,只需指定

即可
class Event
  has_many :links, :dependent => :destroy
end

当您删除Event时,其所有链接都将自动销毁。

来自Deleting From Associations上的Rails指南:

  

依赖关联

     

has_many,has_one和belongs_to关联支持:dependent选项。这允许您指定在删除所有者时删除关联的记录。