2016-05-31 30 views
0

我有下面的代码,我根据他们是否是管理员加载用户的活动。用户只能看到自己的活动源,而管理员可以看到整个流。这是一个前兆共享活动与朋友饲料等未定义的方法'订单'的[]:阵列

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参考,但我已检查了导轨,它似乎是正确的语法。

任何想法?

回答

2

尝试改变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 

应该工作:-)

1

#index动作方法可以被简化和优化(通过置换find_all_bywhere)到:

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

一个优雅的解决方案,但对初学者来说有点复杂。 – Matteo

+0

@ br3nt你做了什么改变? –

+0

@ br3nt对我来说它有过多的语法,并且在语言中并不是真的需要...... –

相关问题