2013-09-12 4 views
0

У моего приложения есть уведомления о деятельности, каждый из которых имеет флаг «видел», который я использую, чтобы проверить, посмотрел ли пользователь на них.Обновление записей неминуемо после действия контроллера rails?

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

def index 
    @unseen_activities = current_user.notifications.unseen.order(:updated_at => :desc) 
    @seen_activities = current_user.notifications.seen.order(:updated_at => :desc) 

    # mark them as viewed 
    current_user.notifications.update_all(:seen => true) 
end 

Но деятельность все загружается как будто они были замечены, хотя это и обновляется после того, как коллекции сделаны. Что мне не хватает? #noob

+0

Вы подтвердили, что 'current_user.notifications.unseen.order (: updated_at =>: desc)' действительно включает некоторые невидимые действия? – zeantsoi

ответ

2

Попробуйте поместить маркировку, если смотреть в after_action обратного вызова:

after_action :mark_as_seen 

def index 
    @unseen_activities = current_user.notifications.unseen.order(:updated_at => :desc) 
    @seen_activities = current_user.notifications.seen.order(:updated_at => :desc) 
end 

private 

def mark_as_seen 
    current_user.notifications.update_all(:seen => true) 
end 

Если это не сработает, попробуйте поставить явное вынести заявление между получением уведомления и обновления там состояние.

Если это не сработает, возможно, отметьте их как замеченные в фоновом задании, такие как Resque или Sidekiq.

Смежные вопросы