2

我有两个模型: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

但这似乎不起作用。我哪里错了?

4

1 回答 1

5

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

在您的模型中,只需指定

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

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

从关于从关联中删除的 Rails 指南:

相关联

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

于 2012-05-10T14:52:34.063 回答