Я строй небольшого щебетать стиль сервиса микроблоггинга, где пользователи могут следовать другим пользователям и получить фид своих сообщенийнесколько объединений с использованием 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: SELECT * FROM сообщений INNER JOIN следует за сообщением ON.ID = следует.followee_id WHERE (follows.follower_id =) , но мне нужно, чтобы это было messages.user_id = follows.followee_id Есть ли способ сделать это? –
Shalmanese