我正在尝试为网站制作新闻Feed并且我将两个不同类的数组一起添加以创建@feed_items数组。但显然我需要能够通过created_by
订购新数组现在我有:
def home
@comments = Comment.all
@images = Image.all
@feed_items = @comments+@images
end
现在,当我在视图中循环@feed_items时,循环显示所有注释(按created_at排序),然后显示图像(按created_at排序)。但我需要订购整个阵列,以便所有内容混合并正确排序。
我试着这样做:
def home
@comments = Comment.all
@images = Image.all
@feed_items = (@comments+@images).order('created_by DESC')
end
但是我得到@feed_items数组的未定义方法错误。与使用限制或分页匹配相同。
答案 0 :(得分:3)
如果您不能在SQL中执行此操作,在单个查询中处理两个不同的表时就是这种情况,您可以使用Ruby执行此操作:
def home
@comments = Comment.all
@images = Image.all
@feed_items = (@comments + @images).sort_by(&:created_at)
end
请记住,使用all
方法可能很危险,因为您可能拥有数万条记录。如果没有别的话,使用像will_paginate这样的分页系统总是一个好主意。
答案 1 :(得分:2)