2012-09-17 33 views

回答

0

ipv6address_id是計算機表的外鍵

id爲Ipv6Address_id表的PK

ids=Computer.select('Ipv6Address_id') 
Ipv6Address.select('*').where('id not in (?)',ids) 

這可能工作

+0

雖然不完全是我需要做的,這當然讓我最大的方式在那裏。我的解決方案: 'ids = Computer.select('ipv6_address_id')。其中('ipv6_address_id IS NOT NULL')' 'Ipv6Address.where(「id not IN(?)」,ids.map {| i | i .ipv6_address_id})' – bdx

0
Ipv6Address.where('ipv6address_id = ?', nil) 
0

用我Where Exists寶石:

# fast 
Ipv6Addresses.where_not_exists(:computer) 

基準測試顯示它在大多數情況下的速度遠遠超過獲取的ID到Ruby的數組,併發送回數據庫:

# slow 
ids = Computer.distinct(:ipv6_address_id).map(&:ipv6_address_id) 
Ipv6Address.where.not(id: ids) 
相關問題