删除每个关系

gag*_*ina 2 ruby ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

但它似乎没有奏效.我哪里错了?

mea*_*gar 5

停在那里,你不必重新发明这个轮子.Rails为您做到这一点.

在您的模型中,只需指定

class Event
  has_many :links, :dependent => :destroy
end
Run Code Online (Sandbox Code Playgroud)

当你删除一个时Event,它的所有链接都会被自动销毁.

从Rails指南中删除关联:

依赖关联

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