"неопределенный метод` name 'для nil: NilClass "при создании нового экземпляра - PullRequest
0 голосов
/ 22 ноября 2010

У меня проблема с рельсами, когда у меня есть базовые отношения многие ко многим между двумя моделями (порядок и статус).Эти модели выглядят следующим образом:

class Order < ActiveRecord::Base
  has_many :products, :through => :lines
  has_and_belongs_to_many :statuses

  default_scope order("#{table_name}.created_at desc")
end

и

class Status < ActiveRecord::Base
  has_and_belongs_to_many :orders

end

В моем представлении индекса для заказов я отображаю самый последний статус заказа, поэтому order.statuses.lastОднако имя, когда я создаю новый заказ, я получаю сообщение об ошибке.Эта ошибка относится к неопределенному имени метода, так как новые заказы не имеют каких-либо отношений при первом создании.

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

Ошибка для правильных мер:

undefined method `name' for nil:NilClass

за эту строку на мой взгляд:

<td><%= order.statuses.last.name %></td>

Спасибо всем.

Ответы [ 2 ]

1 голос
/ 22 ноября 2010

Простое исправление:

<td><%= order.statuses.last.name if order.statuses %></td>
0 голосов
/ 22 ноября 2010

Это следует учитывать, если последний статус отсутствует или последний статус не имеет имени

<td><%= order.statuses.last.try(:name) %></td>
...