-1

我想在两张桌子上应用分页。

消息

Id    Message         Created at
1     Message One     2012-04-23 13:11:23
2     Message Two     2012-04-23 13:11:26
3     Message Three   2012-04-23 13:11:27

出价

Id    Comment         Created at
1     Comment One     2012-04-23 13:11:24
2     Comment Two     2012-04-23 13:11:25
3     Comment Three   2012-04-23 13:11:28

我想使用一个查询获得以下结果(两个最新的出价或消息)

   Id    Content         Created at
    3     Comment Three   2012-04-23 13:11:28
    3     Message Three   2012-04-23 13:11:27
4

3 回答 3

0

退后一步,我可以问一下为什么您需要两个单独的表格用于消息和投标。对我来说,两者看起来都存储某种形式的文本通知。我猜你应该使用单表继承或多态关联(以防将来会有其他业务逻辑出现)。

请查看此博客以了解更多信息。

我认为您的分页跨越两个表格的这种要求是一种设计气味。我没有完整的上下文,我不确定您现在是否有更改设计的自由。但是,只是一个想法!

于 2012-05-07T10:17:15.657 回答
0

有一个名为will_paginate的奇妙宝石。我在我的应用程序中使用它。

观看railscast 以了解如何安装它们。它非常简单而且很棒。

谢谢。

于 2012-05-07T09:41:57.173 回答
0

首先,从多个表中分页记录是一种代码味道。

不过,如果您想采用这种 BAD 方法,以下代码可能对您有所帮助:

records = [Message, Comment, Post].inject([]) do |record, with_class|
  record+with_class.order('created_at DESC')#you can add limit, offset here
end


#Now paginate those records

@records = WillPaginate::Collection.create(current_page, per_page, records.size) do         |pager|
            pager.replace(@records)
           end
于 2014-03-28T07:06:41.887 回答