基本上,我想從數據庫中獲得一個ID數組。Rails:通過查詢/轉換獲得一個對象ID數組
一些背景資料:
- 我渲染OBJETS(FOOS)與一個複選框用戶列表。
- 如果用戶選中一個行在不同的表中創建(bar)
- 當呈現foo list +複選框時我想檢查唯一id是否已經存在於條形ID數組中。
我認爲,使用複選框呈現foo列表時,獲取數組的id將比使用複選框呈現foo列表時查詢foo的每個實例的數據庫效率高得多。
想法?如果不清楚,請提前道歉。
基本上,我想從數據庫中獲得一個ID數組。Rails:通過查詢/轉換獲得一個對象ID數組
一些背景資料:
我認爲,使用複選框呈現foo列表時,獲取數組的id將比使用複選框呈現foo列表時查詢foo的每個實例的數據庫效率高得多。
想法?如果不清楚,請提前道歉。
我使用的地圖方法:
@bars = Bar.all(:select => bar.id)
@bars = @bars.map{|bar| bar.id}
然後我結束了ID的數組。只有一個查詢。
這是什麼問題?如果您有導軌has_many
或has_and_belongs_to_many
關聯,則導軌將爲您提取ID。詳情請參閱relevant tutorial,簡而言之就像@order_ids = @customer.order_ids
。
否則,你可以很容易地使用普通的sql(或活動記錄查詢)。
我們可以使用地圖方法也是這樣
Model.all.map(&:field_name)
最近的Rails的版本都支持Model.pluck(:field_name)
array1 = User.all.collect(&:id)
的array1
在表中Users
所有ID的值。
我知道has_many等。但是,再次,您正在爲每個foo進行關聯查詢,這看起來並不像預取所有條形碼ID然後進行比較那樣有效。 – cbrulak 2010-09-03 14:27:40
@cbrulak當您調用'order_ids'時,rails不會爲每個結果運行查詢。而且,您可以隨時切換到sql:「從my_table中選擇ID,其中......」。 – 2010-09-03 14:45:11