如何合并父数组和一个具有不同属性的子项?

时间:2017-01-11 22:20:15

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord rails-activerecord

我有评论和喜欢(acts_as_votable gem)。我想创建一个活动列表,并按created_at排序以获得评论,并updated_at进行投票。

@activity_list = (@user.comments + @user.find_up_voted_items)

@user.find_up_voted_items - 它不喜欢,但喜欢元素。

我可以使用以下代码找到updated_at投票时间:

@post.votes_for.up.where(voter_id: @user.id).first.updated_at

如何正确合并和排序?

1 个答案:

答案 0 :(得分:0)

以下不一定是高性能的,因为它构建数组而不是ActiveRecord关系。

@ativity_list = (@user.comments + @user.votes.up).sort{|x,y| x.created_at <=> y.created_at}.map{|x| x.is_a?(Vote) ? x.votable : x}

(@user.comments + @user.votes.up)会返回一系列评论和投票。

#sort{|x,y| x.created_at <=> y.created_at}created_at字段

上使用数组排序

#map{|x| x.is_a?(Vote) ? x.votable : x}将数组从评论/投票集更改为评论/投票集