Rails: неопределенный метод `strftime 'для nil: NilClass, но значение (без strftime) возвращает OK - PullRequest
1 голос
/ 25 декабря 2010

У меня странная проблема с запросом activerecord (rails 3).

Если я отправляю запрос № 1 (ниже) в представление (ниже), все работает нормально ... но если я отправляю запрос № 2 (ниже), я получаю "неопределенный метод` strftime 'для nil: NilClass "

... Однако, если я уберу строку strtime из запроса # 2, он вернет неформатированное время просто отлично.

«Профессиональные специальности» - это таблица has_many: through; Я предполагаю, что это как-то связано с этим ... но я не могу понять, что именно.

Есть идеи, что происходит? Все предложения приветствуются:

Запрос № 1 (работает нормально)

@professionals = Professional.all(:include => :user, :conditions => ["users.first_name = ? AND users.last_name = ?", params[:name][:first], params[:name][:last]])

Запрос № 2 (перерывы в работе)

 @professionals = Professional.all(:include => [:user, :professional_specialties], :conditions => ["professional_specialties.profession_type_id = ?", params[:profession_type]] )

View

<% @professionals.each do |p| %>
  <tr>
    <td><%= link_to("%s %s" % [p.user.first_name, p.user.last_name], p) %></td>
    <td><%= p.business %></td>
    <td><%= p.user.role.name %></td>
    <td><%= p.user.created_at %></td>
    <td><%= p.user.last_sign_in_at.strftime("%Y") %></td>
  </tr>

<% end %>

1 Ответ

6 голосов
/ 26 декабря 2010

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

Запустите Professional.all(...).map(&:users) в консоли Rails (rails console в каталоге вашего приложения) и дважды проверьте, что все они имеют допустимые метки времени.

...