2016-05-31 29 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對我來說它有過多的語法,並且在語言中並不是真的需要...... –

相關問題