如何查找相关表中每条记录的最新帖子

时间:2015-07-22 07:17:25

标签: ruby-on-rails

我在'挑战'和'进入'之间有一对多的关系。我正在尝试创建一个页面,显示每个挑战的最新条目。我不知道该怎么做。到目前为止,我只能显示所有条目:

mvn clean package -Dgwt.extraJvmArgs="-Xms2048m -Xmx2048m -XX:PermSize=512M -XX:MaxPermSize=512M -XX:+UseConcMarkSweepGC" 

discovers.html.erb

discovers_controller.rb

 def index
    @discovers = Entry.all
  end
end

2 个答案:

答案 0 :(得分:1)

如果您以标准方式设置关系,您应该能够按照评论中提到的方式请求每个挑战的条目:challenge.entries

然后你只需要采用最新的 - .last最简单的方法来实现它,但是如果你通过update_at字段定义最新版本,它就不适合你。因此,在这种情况下(或任何其他相关属性),您可能希望事先使用.order('updated_at')对其进行排序

在您定义最后条目的特定情况下,您可以在控制器中使用类似的东西

@discoveries = Challenge.all.map{|c| c.entries.last}

答案 1 :(得分:0)

在您的控制器中,您可以:

@discovers = Entry.order('created_at DESC').all

但是,我建议您在查询中使用pagination而不是all。因为随着条目表中数据的数量增加,它将增加页面加载时间。

<强>更新

您可以在Entry模型中创建范围:

scope :last_entries, -> { order(:created_at => :desc).group(:challenge_id) }

然后在你的控制器中:

@discovers = Entry.last_entries #no need to do `all`, as it is default

但是,我仍然建议你考虑使用分页。