2014-09-23 48 views
3
class Comment < ActiveRecord::Base 
    # updated_at :datetime 
    belongs_to :user 
end 

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

我想查询某个用户,并分别根据她的评论updated_at属性和帖子last_edit_at属性按时间顺序显示她的评论和帖子。在一个查询中按不同属性排序两个模型

我试着an answer从一个类似的问题,但属性是相同的:

combined_sorted = (User.comments + User.likes).sort{|a,b| a.created_at <=> b.created_at } 

我怎么能做到以上,但具有独特的属性?

回答

4

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

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 } 
+1

天才!非常感谢。 – Numbers 2014-09-23 21:53:29

相关问题