2011-06-30 34 views
6

我正在使用Rails 3開發API。用戶可以有多個聯繫人項目,如電話,電子郵件,網站和地址。每個項目都有自己的模型。Rails 3.獲取最新更新

我需要在我的iPhone應用程序中使用此API進行緩存,因此我需要獲取對任何項目的最新更新發生的日期,並將其與緩存文件的時間戳進行匹配。

如何獲得最新的項目(比較所有項目表時)?

我得到這樣的每個項目表的最近項目。這真的很好嗎?

@phones = @user.phones.order("updated_at desc").limit(1) 

感謝您的幫助!

回答

13

您可以使用ActiveRecord的touch方法。如果您有一個擁有多個子記錄的父記錄,這尤其有用。每次保存或銷燬子記錄時,母記錄都會將其updated_at字段設置爲當前時間。

class User < ApplicationRecord 
    has_many :phones 
    has_many :addresses 
end 

class Phone < ApplicationRecord 
    belongs_to :user, touch: true 
end 

class Address < ApplicationRecord 
    belongs_to :user, touch: true 
end 

現在的地址或電話被更新的任何時候,用戶updated_at將被設置爲當前時間。

檢查時,最後更新爲當前用戶發生了,在他們所有的表,你現在要做的:

@last_updated = @user.updated_at 

對於寫道:你獲得了很多更簡單的查詢,檢查您的緩存小的開銷到期。此文檔可在下找到。

+0

這太酷了!我不知道這是否存在。你拯救了我的一天道格拉斯。非常感謝! –