0

簡単な問題があります。私は2つのテーブルを持っています:フォロワー(列ID、user1、user2)とユーザー(列ID、名前、アドレス)。

特定のユーザーのフォロワーのすべてのユーザーデータを取得したいと思います。つまり、可能な限り効率的なクエリで、これを実行したいと思います:Followers.find_all_by_id(10)。次に、そのリストのフォロワーごとに、Usersテーブルでそれらを検索します。

私は明らかに大きなforループを実行できますが、ここでincludesステートメントを使用できることも知っています。私はそれを行う方法を理解することができません。これが私がこれまでに得たものです:

Follow.includes(:user).where('user1=?',current_user.id)

それは機能しません(私が得る結果は、Followテーブルのサブセクションにすぎません)。

ご協力いただきありがとうございます!リンゴ

これが私のモデルがどのように見えるかです...

Follow.rb:

class Follow < ActiveRecord::Base
  belongs_to :photo_taker, :class_name => "User"
  belongs_to :user 
end

User.rb:

has_many :followings, :class_name => 'Follow', :dependent => :destroy
has_many :followers, :class_name => 'Follow', :foreign_key => 'user2', :dependent => :destroy
4

1 に答える 1

0
# Follow:
belongs_to :photo_taker, :foreign_key => :user2, :class_name => "User"
belongs_to :user, :foreign_key => :user1

# User:
has_many :followings, :class_name => 'Follow', :foreign_key => :user1, :dependent => :destroy
has_many :followers, :through => :followings, :source => :photo_taker, :dependent => :destroy

user.followers
#=> returns following users

フォロワーが含まれているオブジェクトを正確にフォローする必要がある場合。

user.followings.includes(:photo_taker)
于 2012-12-21T00:46:57.493 に答える