0
比賽這裏有一個有趣的爲你的鄉親......HABTM檢查的最新3
我有「狗」和「旅行」之間的HABTM(has_and_belongs_to_many)的關係。我的目標是找到兩個結果集: 1)最近3次旅行中至少有1次的狗,並稱其爲@dogs_current 2)最近3次沒有進行過任何行程的狗並將其稱爲@dogs_old
我發現,我能找到什麼樣的最後3個車次是由旅行模型做這個:
named_scope :last3, :order => 'date DESC', :limit => 3
但不知道如何使用該名單得到1和2。這個技巧的作品,但它看起來很醜。一定會有更好的辦法! :)
@dogs_current = []
@dogs_old = []
@dogs.each do |dog|
if (Trip.last3 - dog.trips).size < 3 then
@dogs_current << dog
else
@dogs_old << dog
end
end
任何想法?謝謝! -Cam
這似乎很接近。它在dogs_trips.id中出現錯誤,我必須在條件部分更改爲dogs_trips.trip_id。 結果唯一的問題是,它給了我每個狗他們每次旅行的多個值。如果一隻狗在最後一次旅行的所有3次中都返回3次。也許我可以在那裏添加一個「獨特的」參數? – Cameron 2010-05-05 17:20:22
對不起,我的錯!我編輯了我的答案。重複的結果是因爲「連接」。 – 2010-05-05 17:28:37
經過你最後的編輯,它確實爲dog_current工作。但是,代碼對於dogs_old看起來是一樣的。它是否應該像「不在(?)」那樣?我嘗試了這一點,但結果卻與那些在過去的3次旅行中都沒有的狗混在一起。任何幫助感謝! :) – Cameron 2010-05-06 16:08:08