1

これは問題なく機能し、何が問題を引き起こしたのかはわかりませんが、次のエラーが発生します。

undefined method `Name' for nil:NilClass

Rails3.1を実行しています。「restaurants」、「lists」、「list_Items」というテーブルがあります。関連付けは次のとおりです。

class Restaurant < ActiveRecord::Base
  #relations
  has_many :list_items
  has_many :reviews

class List < ActiveRecord::Base
  has_many :list_items, :dependent => :destroy

class ListItem < ActiveRecord::Base
  belongs_to :restaurant
  belongs_to :list

問題を引き起こしている行は、リストアイテムを表示するビューパーシャルにあります

<tr>
  <td><%= list_item.restaurant.Name %> <%= link_to 'X', list_item, :method => :delete, :remote => true %></td>
</tr>

これはすべてうまくいくはずだと思いますが、一番上のエラーを考えると、レストランの名前を取得できるように関連付けを認識していません。繰り返しますが、これは機能していました。なぜ今壊れているのかわかりません...

アップデート

Muが正しく指摘したように(Muに感謝)、問題は関連付けではなく、削除されたレストランに関連付けられたlist_itemの存在でした。それで、それはNilエントリに対して実行されていました。

上記は解決され、今、本当の質問(私が最初に尋ねるべきだった質問)は、これが起こらないようにする方法です。関連するレストランが削除されたときにlist_itemが確実に削除されるようにするには、何を変更する必要がありますか?

4

1 に答える 1

1
class Restaurant < ActiveRecord::Base

  has_many :list_items, :dependent => :destroy
  has_many :reviews
  ...

end

そして、あなたは行ってもいいです。

于 2012-01-22T19:18:37.130 に答える