我正在使用活動記錄來創建陣列。
users = User.all.to_a
現在我想稍后在這個陣列中查找用戶 ID:1
users.find(1)
但它沒有給出結果,而是回傳所有內容。如何在此結果陣列中搜索我選擇的用戶 ID。我可以看到用戶是一個array但在陣列中的每個User物件記錄。
如果我遵循
user.first
它回傳用戶物件,但我想搜索,我該怎么做。我知道如果我洗掉to_a它會起作用,但它會創建另一個 sql 查詢。
uj5u.com熱心網友回復:
因為它是一個物件陣列,你應該使用findwith 塊:
users.find { |user| user.id == 1 }
uj5u.com熱心網友回復:
User.find(1)是一個ActiveRecord::FinderMethod。但是,當您已經將所有記錄加載到記憶體中時,這些記錄將轉換為實體User并存盤在陣列中。因此,您需要使用find或select實作Array如下:
users.find { |user| user.id == 1 } #=> returns the first found record
users.select { |user| user.id == 1 } #=> returns an array with all found record
請記住,正確設定后,資料庫查詢能夠使用有效的索引。這使得資料庫查詢非常快。當您將所有記錄加載到記憶體中時,需要將這些記錄轉換為適當的實體。并且在陣列上搜索不能使用任何索引,這意味著它可能(取決于陣列的大小)比新的資料庫查詢慢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/416949.html
標籤:
上一篇:語法錯誤,意外'=',期待')'
下一篇:Mongo::Error::UnsupportedFeatures(位于(localhost:27017)的服務器報告有線版本(2),但此版本的Ruby驅動程式至少需要(6)。)
