我有两个模型:Event
和Link
。
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
但它似乎没有起作用。我哪里错了?
答案 0 :(得分:5)
停在那里,你不必重新发明这个轮子。 Rails为你做这件事。
在您的模型中,只需指定
即可class Event
has_many :links, :dependent => :destroy
end
当您删除Event
时,其所有链接都将自动销毁。
来自Deleting From Associations上的Rails指南:
依赖关联
has_many,has_one和belongs_to关联支持:dependent选项。这允许您指定在删除所有者时删除关联的记录。