Как добавить более одного ресурса в эту структуру фида - PullRequest
0 голосов
/ 14 апреля 2011

Я следовал за тем, как создать канал в Учебник Майкла Хартла . У меня есть этот метод в моей модели пользователя:

def feed
  Video.from_users_followed_by(self)
end

и это в моей модели видео:

scope :from_users_followed_by, lambda { |user| followed_by(user) }

def self.followed_by(user)
  followed_ids = %(SELECT followed_id FROM relationships
                       WHERE follower_id = :user_id)
  where("user_id IN (#{followed_ids})", { :user_id => user })
end

для извлечения всех видео, созданных пользователями, за которыми следует current_user.

Тогда у меня есть этот метод в моем videos_controller:

def feed_display
  @videos = current_user.feed.page(params[:page]).per(15)
end

и затем я рендерим частичное в моем videos/feed_display.html.erb представлении:

<div id ='video_div'>
    <%= render @videos, :collection => @videos %>
</div>

Для отображения всех видео, созданных пользователями, пользователь следует.

Теперь я хочу добавить еще один ресурс в ленту новостей, чтобы он содержал как видео, так и video_votes от пользователей, за которыми следует пользователь.

Я думаю о том, чтобы скопировать код области видимости модели моего видео в мою модель video_vote, а затем добавить следующую строку:

VideoVote.from_users_followed_by(self)

к методу feed, чтобы он выглядел следующим образом:

def feed
  Video.from_users_followed_by(self)
  VideoVote.from_users_followed_by(self)
end

У меня вопрос, как мне изменить мой метод feed_display и просмотр feed_display, чтобы он отображал не только видео, но и голоса?

1 Ответ

0 голосов
/ 14 апреля 2011

Вы можете изменить свой запрос SQL, чтобы включить вторую модель с оператором UNION.

...