私は3つのモデルを持っています
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
私は2つのことをする必要があります:
- フォローされている場所またはユーザーのイベントの同種のソート済みリストを取得します
- フォローされている場所とユーザーのイベントの同種のソート済みリストと重複のないイベントを取得します
だから例えば
User.find(1).following_places.includes(:events).collect{|p| p.events}.flatten.sort{|a,b| a.startdate <=> b.startdate}
ユーザーがフォローしているすべての場所のイベントのリストを日付順に並べ替えて返す必要があります。これに関する問題は、私が正しく理解している場合、SQLではなくrubyで収集、フラット化、および並べ替えが行われることです。
2番目の部分は次のようになり、理想的には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}
この答えは近いですが、私が探しているものではありません。
ご協力いただきありがとうございます!