Неопределенный метод rank_tally для массива (гем thumbs_up для ранжирования сообщений + изображений в одном фиде) - PullRequest
0 голосов
/ 29 июля 2011

У меня есть простое приложение, которое позволяет пользователям публиковать текст и изображения.Я также использую гем thumbs_up (github repo) , чтобы пользователи могли голосовать за свои избранные.

В настоящее время я пытаюсь создать один фид, содержащий текстовые и графические элементы.Я был в состоянии объединить и в один агрегированный канал, заказать его, и представления работают.Однако, когда я использую метод "rank_tally" для @feed в контроллере, я получаю "неопределенный метод" rank_tally "для ошибки #Array: 0x1052befe8".

rank_tally работает, если я применяю его только к одной модели(например, если я изменю @aggregated на posts.rank_tally), но, похоже, есть проблема с массивом @aggregated, который я создаю, комбинируя оба.

Есть идеи, как мне это исправить?Большое спасибо за помощь!

def feed
  @user = User.find_by_cached_slug(params[:id])
  posts = Post.where("poster = ? and (postername is not null or name != ?)", @user.id, 'Guest')
  images = Image.where("poster = ? and (postername is not null or name != ?)", @user.id, 'Guest')
  @aggregated = (posts + images).rank_tally(
    {:at_least => 1,
     :at_most => 10000,
     :start_at => 1.weeks.ago,
     :limit => 10,
    })
  @feed = @aggregated.paginate(:page => params[:page])
     respond_to do |format|
        format.html # show.html.erb
        format.xml { render :xml => @user }
   end
end

1 Ответ

0 голосов
/ 29 июля 2011

Это потому, что результат (posts + images) является массивом, а не отношением, поэтому он не может работать. Вы должны попробовать это:

posts.merge(images).rank_tally(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...