これが私のDBクエリです:
User has_many UserFollow (UserFollow は User モデル間の関係です)。ユーザー has_many の写真。Photo has_many PhotoFollow リレーションシップ (PhotoFollow は、User モデルと Photo モデルの間のリレーションシップです)。
@user_list = Array.new
user_followers = UserFollow.where("user_1_id = ?", current_user.id).includes(:follower)
user_followers.each do |f|
@user_list << f.user
end
photos = Photo.where("user_id = ?", current_user.id).includes(:follow_relationships => [:photo])
photos.each do |p|
p.follow_relationships.each do |f|
@user_list << f.user if !@user_list.include? f.user
end
end
if @user_list.size < 150
users = User.where("verified = ? and first_name IS NOT NULL and last_name IS NOT NULL", true).includes(:solutions).limit(150 - @user_list.size)
users.each do |u|
@user_list << u if !@user_list.include? u
end
end
これには明らかに途方もない時間がかかります。インクルードを使用すると役立ちますが、この一連の操作をより効率的に行う方法があるかどうか疑問に思っています。
ありがとう、リンゴ