2

私は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 に答える