我有三个模特
class Place < ActiveRecord::Base
acts_as_followable
has_many :events
end
class Event < ActiveRecord::Base
attr_accessible :startdate
acts_as_followable
belongs_to :place
belongs_to :user
end
class User < ActiveRecord::Base
acts_as_followable
acts_as_follower
has_many :events
end
我需要做两件事:
例如
User.find(1).following_places.includes(:events).collect{|p| p.events}.flatten.sort{|a,b| a.startdate <=> b.startdate}
应返回用户所关注的所有地点的事件列表,按日期排序。如果我理解正确的话,问题是收集,展平和排序是以ruby而不是SQL发生的。
第二部分看起来应该如下所示,理想情况下也完全出现在SQL中:
user = User.find(1)
(user..following_places.includes(:events).collect{|p| p.events}.flatten +
user.following_users.includes(:events).collect{|p| p.events}.flatten +
user.following_events).sort{|a,b| a.startdate <=> b.startdate}
This answer很接近,但不是我想要的。
感谢您的帮助!
答案 0 :(得分:0)
您是否尝试过使用订单?
User.find(1).following_places.includes(:events).order('events.startdate ASC')