Rails - Ассоциации ActiveRecord - PullRequest
1 голос
/ 22 января 2012

Это работало просто отлично, не знаю, что сломало, но теперь я получаю эту ошибку:

undefined method `Name' for nil:NilClass

Я использую Rails 3.1. У меня есть таблица под названием «рестораны», «списки» и «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>

Я думаю, что все это должно работать нормально, но, учитывая ошибку наверху, это не означает, что ассоциация может быть такой же, как у ресторана. Опять же, это работало, я не знаю, почему это ломается сейчас ...

UPDATE

Как правильно заметил Му (спасибо Му), проблема не в ассоциации, а в присутствии list_item, связанного с удаленным рестораном. Итак, он столкнулся с нулевой записью.

Вышеуказанное решено, и теперь реальный вопрос (вопрос, который я должен был задать с самого начала), заключается в том, как этого избежать. Что я должен изменить, чтобы гарантировать удаление list_item при удалении соответствующего ресторана?

1 Ответ

1 голос
/ 22 января 2012
class Restaurant < ActiveRecord::Base

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

end

И тебе пора.

...