Rails:nil的未定义方法`strftime':NilClass,但是value(没有strftime)返回OK

Pla*_*Ton 1 activerecord ruby-on-rails strftime ruby-on-rails-3

我对(rails 3)activerecord查询有一个奇怪的问题.

如果我向视图(下面)提交查询#1(下面),一切正常...但是如果我提交查询#2(下面),我得到"未定义的方法`strftime'为nil:NilClass"

...但是,如果我从查询#2中删除strtime字符串,它会返回未格式化的时间.

"专业特色"是一个很好的经历:通过表; 我认为这与它有关...但我无法弄清楚是什么.

知道发生了什么事吗?所有建议赞赏:

查询#1(工作正常)

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

查询#2(休息时间)

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

视图

<% @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 %>
Run Code Online (Sandbox Code Playgroud)

von*_*rad 6

我最好的猜测是两个查询会给你不同的结果集.在第二个结果集中,一个或多个用户具有NULLlast_sign_in_at列的值.

运行Professional.all(...).map(&:users)在Rails的控制台(rails console在你的应用程序目录),并仔细检查,它们都具有有效的时间戳.