2012-09-14 81 views
0

好吧,我的應用上有多個用戶,每個用戶都有多個'status_updates'。使用'created_at'查找以前的記錄

每個狀態更新都是id,然後爲它所屬的用戶建立關聯。

因此,所有的,比如說,用戶2的狀態更新,可能會爲了3,10,34,55

的事情是ID的,每個status_update從狀態更新之前需要信息的用戶。顯然,我不能簡單地用id-1找到狀態更新,因爲狀態更新可能屬於不同的用戶,並且由於該狀態更新對於用戶而言不存在,所以無論如何都將返回nil。

我不知道如何編寫where()參數以便簡單地找到以前爲用戶創建的狀態更新。

洙......

這裏是我的模型對於這個問題的要害部位:當談到寫作的論據此

after_find :previous_status_update 
. 
. 
. 
def previous_status_update 
current_id = self.id 
previous_status_update = user.status_update.where(created_at: ? < self.created_at).limit(1) 
end 

上guides.rubyonrails.org指令被混淆。

感謝您的幫助!

回答

2

你太親近了。

previous_status_updates = user.status_update.where("created_at < ?", self.created_at) 

這將返回所有比這更舊的狀態更新。

如果你只想要一個,剛剛搶在列表中的第一個或最後一個(無論是你想要的,如果你願意,你可以先過與.order()

previous_status_update = user.status_update.where("created_at < ?", self.created_at).first 
+0

工作就像一個魅力!謝謝! –

0

這必將努力對其進行排序

previous_status_update = user.status_update.where(created_at: ? < self.created_at).last