我有一个简单的问题。我有2个表:关注者(列id,user1,user2)和用户(列id,名称,地址)。
我想获取给定用户的关注者的所有用户数据。即在尽可能高效的查询中,我想这样做:Followers.find_all_by_id(10)。然后,对于该列表中的每个关注者,我想在Users表中查找它们。
我显然可以做一个大的for循环,但我也知道我可以在这里使用一个include语句。我只是无法弄清楚如何去做。这是我到目前为止所得到的:
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
答案 0 :(得分: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)