Rails 3.获取最新更新

时间:2011-06-30 09:48:04

标签: ruby-on-rails-3

我正在使用Rails 3开发API。用户可以拥有多个联系人项目,如电话,电子邮件,网站和地址。每个项目都有自己的模型。

我需要在使用此API的iPhone应用程序中进行缓存,因此我需要获取任何项目的最新更新日期,并将其与缓存文件的时间戳匹配。

如何获取最新的项目(比较所有项目表时)?

我正在获取每个项目表的最新项目。这真的很好吗?

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

感谢所有人的帮助!

1 个答案:

答案 0 :(得分: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

现在,只要地址或手机更新,用户的updated_at就会设置为当前时间。

要检查当前用户上次更新的时间,在所有表中,您现在可以执行以下操作:

@last_updated = @user.updated_at

对于写入中的小开销,您可以在检查缓存过期时获得更多简单查询。可以在belongs_to options下找到相关文档。