Ruby on rails Rails:nil:NilClass的未定义方法'strftime',但value(不带strftime)返回OK

Ruby on rails Rails:nil:NilClass的未定义方法'strftime',但value(不带strftime)返回OK,ruby-on-rails,activerecord,ruby-on-rails-3,strftime,Ruby On Rails,Activerecord,Ruby On Rails 3,Strftime,我对rails 3 activerecord查询有一个奇怪的问题 如果我将下面的查询1提交到下面的视图,一切都正常……但是如果我提交下面的查询2,我将得到nil:NilClass的未定义方法“strftime” …但是,如果我从查询2中去掉strtime字符串,它将返回未格式化的时间 专业特长有很多:通过表;我认为这与此有关…但我不太明白是什么 知道发生了什么吗?欢迎所有建议: 查询1可以正常工作 @professionals = Professional.all(:include =>

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

如果我将下面的查询1提交到下面的视图,一切都正常……但是如果我提交下面的查询2,我将得到nil:NilClass的未定义方法“strftime”

…但是,如果我从查询2中去掉strtime字符串,它将返回未格式化的时间

专业特长有很多:通过表;我认为这与此有关…但我不太明白是什么

知道发生了什么吗?欢迎所有建议:

查询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]] )
看法


我最好的猜测是,这两个查询提供了不同的结果集。在第二个结果集中,一个或多个用户的最后一个\u符号\u在\u at列中为空值


在应用程序目录中的Rails控制台Rails控制台中运行Professional.all….map&:users,并仔细检查它们是否都有有效的时间戳。

我最好的猜测是,这两个查询会为您提供不同的结果集。在第二个结果集中,一个或多个用户的最后一个\u符号\u在\u at列中为空值


运行Professional.all….map&:Rails控制台中的用户,并在应用程序目录中仔细检查他们是否都有有效的时间戳。

@Zabba:我想你是说是的,这就是我的意思。删除了我的评论。当然。非常感谢,有一个带有nil值的隐藏项。nil.strftime不应该在没有错误消息的情况下返回nil吗?否则我们需要设置除非为零的条件,这很烦人…@Augustin绝对不是。strftime不是nil的有效方法。将方法从一次添加到零是一个非常糟糕的主意,因为您将在哪里划定界限?字符串和数组呢?按照这种逻辑,nil.downcase或nil.first不应该也返回nil而不返回错误消息吗?@Zabba:我想你是说是的,这就是我的意思。删除了我的评论。当然。非常感谢,有一个带有nil值的隐藏项。nil.strftime不应该在没有错误消息的情况下返回nil吗?否则我们需要设置除非为零的条件,这很烦人…@Augustin绝对不是。strftime不是nil的有效方法。将方法从一次添加到零是一个非常糟糕的主意,因为您将在哪里划定界限?字符串和数组呢?按照这种逻辑,nil.downcase或nil.first不应该也返回nil而不返回错误消息吗?
<% @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 %>