1

我希望能夠返回User.allcurrent_user作爲第一個結果,其餘的按字母順序排序user.name在ActiveRecord_Relation結果中移動項目?

什麼是「Rails」的方式來做到這一點?我認爲這是將ActiveRecord_Relation轉換爲數組,然後使用.insert.delete_at的組合將目標用戶從其當前位置移動到前端。我想爲此創建一個輔助方法嗎?還是有一個完全不同的方法?

謝謝!

+1

需要問的問題:你試圖用這個來達到什麼目的? – BroiSatse 2015-04-01 22:06:49

+0

@BroiSatse我想要列表頂部的當前用戶的所有用戶的選擇下拉列表... – 2015-04-02 00:04:59

+0

我會問「爲什麼?」但如何填充字段和ajax調用呢?他們鍵入時會搜索用戶名。或者,也許某種延遲加載會起作用。但我很好奇你爲什麼要這樣做。這是一個管理頁面嗎? – Jeff 2015-04-02 11:53:58

回答

1

不是最 「railsy」 的方式,但這應該工作:

users = User.all.append(User.find(current_user.id)) 
users = (users & users).reverse! 
+1

你可以使用「prepend」而不是「append」來避免「reverse」:-) – Hugo 2017-05-09 16:27:23

1

在一個查詢:

users = User.where("id != ?", current_user.id).all.insert(0, User.find(current_user.id))

但是,請記住,它幾乎總是一個壞主意打造您的網站在User.all左右的查詢...在超過10,000個用戶後,您的應用程序將停止響應。無論你在做什麼,都應該對結果進行分頁。