我在'挑战'和'进入'之间有一对多的关系。我正在尝试创建一个页面,显示每个挑战的最新条目。我不知道该怎么做。到目前为止,我只能显示所有条目:
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
答案 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
但是,我仍然建议你考虑使用分页。