我正在使用Rails 3开发API.用户可以拥有多个联系人项目,如电话,电子邮件,网站和地址.每个项目都有自己的模型.
我需要在使用此API的iPhone应用程序中进行缓存,因此我需要获取任何项目的最新更新发生的日期,并将其与缓存文件的时间戳匹配.
如何获取最新的项目(比较所有项目表时)?
我正在为每个项目表获取最新项目.这真的很好吗?
@phones = @user.phones.order("updated_at desc").limit(1)
Run Code Online (Sandbox Code Playgroud)
感谢所有的帮助!
Dou*_*rer 12
您可以使用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
Run Code Online (Sandbox Code Playgroud)
现在,updated_at只要更新地址或电话,用户就会被设置为当前时间.
要检查当前用户的最后更新时间,在所有表中,您现在可以:
@last_updated = @user.updated_at
Run Code Online (Sandbox Code Playgroud)
对于写入中的小开销,您可以在检查缓存过期时获得更多简单查询.可以在belongs_to选项下找到相关文档.