У меня есть приложение Rails 3.0.7 (Ruby 1.9.2), где пользователи могут накапливать баллы в зависимости от того, что они делают. Я пытаюсь создать отчет, который показывает, сколько очков у каждого пользователя, но это не работает. Когда я запускаю его на некоторых тестовых данных, у меня около 350 пользователей, 100 из которых имеют баллы, но только около 10 набирают баллы, а остальные возвращаются с 0 баллами.
Модель / таблица действий хранит баллы за действие.
- Активность относится к кампаниям
- Кампании принадлежат сообществам
Это код из отчета:
<% @users.each do |user| %>
<%= user.username %>
<%= Activity.calculate_user_points(current_community, user.id) %>
<% end %>
В контроллере приложения current_community определяется как:
def current_community
logger.debug "ApplicationController::current_community"
return @current_community if defined?(@current_community)
@current_community = current_community_session && current_community_session.community
end
В модели деятельности у меня есть этот метод:
def self.calculate_user_points(community, user_id)
Activity.sum(:amount , :conditions => [ "community_id IN (?) and user_id =?", community.campaigns, user_id ])
end
Что странно для меня, почему некоторые рассчитывают правильно, а остальные рассчитывают как 0?