2012-05-10 16 views
2

私にはEventLinkの2つのモデルがあります。各リレーションを削除する

  • イベント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 

しかし、それは動作していないようです。どこが間違っていますか?

答えて

5

すぐそこに止まると、この車輪を再発明する必要はありません。 Railsがこれを行います。お使いのモデルで

、単に

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

を指定し、Eventを削除すると、そのすべてのリンクが自動的に破棄されます。

Deleting From Associations上のRailsのガイドから:依存オプション:

依存団体

にhas_many、has_oneのとbelongs_toの関連付けがサポートされています。これにより、所有者が削除されたときに関連するレコードを削除するように指定できます。

+0

あなたの答えをありがとうございます:)それは非常にうまくいった – gaggina

関連する問題