Rails:从关联的多个子级检索最新时间戳

时间:2018-08-30 04:35:41

标签: ruby-on-rails postgresql rails-activerecord

我的父对象有两个子对象。

它们每个都有update_at和viewed_at时间戳。

即具有has_many / belongs_to关联的人对象

Books: updated_at, viewed_at

Videos: updated_at, viewed_at

我想要一个仅能查询四次中的最新查询的查询。 即

Person.getAllBooksAndVideos.pluck(:updated_at, :viewed_at).sort{|a,b| [a.updated_at, a.viewed_at].compact.max <=> [b.updated_at, b.viewed_at].compact.max}.last 我不知道如何做getAllBooksAndVideos.pluck(:updated_at, :viewed_at)部分,非常欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

您可以整理数组中所有关联的结果,并在其上调用sort_by。

result = (person.books + person.videos).sort_by {|x| [x.updated_at, x.viewed_at]}.last

然后,您应该能够这样访问结果:
result.updated_at # This should give you your updated_at date
result.viewed_at # This should give you your viewed_at date