在一个查询中按不同属性排序两个模型

Num*_*ers 4 ruby-on-rails ruby-on-rails-4 rails-activerecord

class Comment < ActiveRecord::Base
  #  updated_at :datetime
  belongs_to :user
end

class Post < ActiveRecord::Base
  #  last_edit_at :datetime
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

我想根据她的评论updated_at属性和帖子last_edit_at属性分别查询某个用户并按时间顺序显示她的评论和帖子.

我尝试过类似问题的答案,但属性是相同的:

combined_sorted = (User.comments + User.likes).sort{|a,b| a.created_at <=> b.created_at }
Run Code Online (Sandbox Code Playgroud)

我怎样才能完成上述但具有独特属性?

Ste*_*zyn 5

你可以创建一些别名属性......

class Comment < ActiveRecord::Base
  #  updated_at :datetime
  alias_attribute :sort_date, :updated_at
  belongs_to :user
end

class Post < ActiveRecord::Base
  #  last_edit_at :datetime
  alias_attribute :sort_date, :last_edit_at
  belongs_to :user
end

user = User.first # replace with method to retrieve desired user
combined_sorted = (user.comments + user.likes).sort{|a,b| a.sort_date <=> b.sort_date }
Run Code Online (Sandbox Code Playgroud)