[]:Array 的未定义方法`order'

undefined method `order' for []:Array

我有以下代码,我根据用户是否是管理员为他们加载活动。用户只能看到他们自己的 activity 提要,而管理员可以看到整个流。这是与朋友等分享 activity 提要的前奏。

  def index
    if current_user?
      @incidents = Incident.find_all_by_user_id(current_user.id).order("created_at desc")
    else
      @incidents = Incident.all.order("created_at desc")
    end
  end

我收到上面提到的错误 (undefined method "order" for []:Array)。它似乎是 .order 参考,但我已经检查了 rails 指南,它似乎是正确的语法。

有什么想法吗?

尝试将 find_by... 更改为 where,因此:

def index
    if current_user?
      @incidents = Incident.where(user_id: current_user.id).order("created_at desc")
    else
      @incidents = Incident.all.order("created_at desc")
    end
  end

应该有效:-)

可以简化和优化#index操作方法(通过将find_all_by替换为where)到:

 def index
   clause = current_user? && Incident.where(user_id: current_user.id) || Incident
   @incidents = clause.order("created_at desc")
 end