如何一次从两个表中获取x个最新记录

时间:2016-12-14 20:55:58

标签: sql ruby-on-rails postgresql sqlite

我有两个表:一个用于帖子,一个用于主题:

posts: id, topic_id, content, created_at, updated_at 
topics: id, title, content, created_at, updated_at

我想根据updated_at列从两个记录中检索x个最新记录。所以最后我希望将它们放在一个由BOTH Post和Topic类型对象组成的集合中。我希望我能说清楚。

2 个答案:

答案 0 :(得分:0)

看起来我最终还是没有说清楚。但与此同时,我提出了解决方案。它不完美,但它有效。

  def recent_activities(count: 10)
    posts  = Post.order(updated_at: :desc).limit(count)
    topics = Topic.order(updated_at: :desc).limit(count)
    activities = posts + topics
    activities.sort! { |x, y| y.updated_at <=> x.updated_at }
    activities.first(count)
  end

因此,您可以看到post.topic_id和topic.id关联不相关。有两个表恰好都有updated_at列。我需要来自小组的最近的X记录,包括帖子和主题 - 在上面称为活动。

答案 1 :(得分:-1)

因为你已经有了这些关联,为什么不呢:

<% Topic.order(:created_at => :asc).limit(10) do |topic| %>
  <%= topic.title %>
  <%= topic.content %>
  <%= topic.post.content %>
  <%= topic.created_at %>
  <%= topic.post.created_at %>
<% end %>