我建立一个小的Twitter微博式的服务,用户可以跟随其他用户,并得到他们的消息的饲料多个连接在轨使用ActiveRecord
我有以下型号:
class Follow < ActiveRecord::Base
belongs_to :follower, :class_name => "User"
belongs_to :followee, :class_name => "User"
end
class User < ActiveRecord::Base
has_many :follows, :foreign_key => 'follower_id',
:class_name => 'Follow'
has_many :followers, :through => :follows
has_many :followed, :foreign_key => 'followee_id',
:class_name => 'Follow'
has_many :followees, :through => :followed
has_many :messages
end
class Message < ActiveRecord::Base
belongs_to :user
end
要获取当前用户的饲料,我想执行下面的SQL查询:
SELECT * FROM follows JOIN users JOIN messages WHERE follows.follower_id = current_user.id AND follows.followee_id = users.id AND users.id = messages.user_id;
什么是这样做的正确的ActiveRecord的方式?
has_and_belongs_to_many:followed_messages,:foreign_key => 'follower_id',:CLASS_NAME => '消息',:association_foreign_key => 'followed_id' 产生可以按如下方式执行指定的SQL查询SQL: SELECT * FROM消息INNER JOIN跟在ON messages.id =后面。followee_id WHERE(follows.follower_id =) ,但我需要它是 messages.user_id = follows.followee_id 有没有办法做到这一点? –
Shalmanese
2009-05-10 09:10:31