我得到了我的藏品是這樣的:獲取所有的IDS從集合
hotels = Hotel.where('selection = ?', 1).limit(4)
如何我能得到這個項目所有的ID沒有一個循環?我可以使用類似:
hotels.ids ?
感謝您對試圖hotels.map(&:id)
或hotels.map{|h| h.id }
我得到了我的藏品是這樣的:獲取所有的IDS從集合
hotels = Hotel.where('selection = ?', 1).limit(4)
如何我能得到這個項目所有的ID沒有一個循環?我可以使用類似:
hotels.ids ?
感謝您對試圖hotels.map(&:id)
或hotels.map{|h| h.id }
什麼?
他們都指紅寶石一樣的東西,第一個是更好的給習慣於紅寶石派通常,而第二個是更容易理解,適合初學者。
你也可以只拉ID。
hotels.select(:id).where(selection: 1)
最客觀,簡單,快速的解決方案。這似乎很明顯,但人們堅持使用可枚舉的方法來處理** everything **。 –
如果你只需要使用所有的ID的數組,你應該使用pluck,因爲它使正確的查詢,不必使用任何紅寶石。此外,它不必爲從數據庫返回的每條記錄實例化一個Hotel對象。 (更快)。
Hotel.where(selection: 1).pluck(:id)
# SELECT hotels.id FROM hotels WHERE hotels.selection = 1
# => [2, 3]
如果您使用Rails> 4,你可以使用ids
方法:
Person.ids # SELECT people.id from people
Rails 5返回'Array
它應該是'hotels.map(:ID)'。否則,我同意答案 – DanneManne
'hotels.map(&:id)'會更好。編輯:outraced by @DanneManne :-) –
@DanneManne錯字的好處:每次咬我一次:/ – Romain