habtm mongoid с counter_cache - PullRequest
       3

habtm mongoid с counter_cache

0 голосов
/ 09 сентября 2011

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

Чтобы сделать это эффективно, я создал следующий обратный вызов:

  before_save :update_followers_and_members

  def update_followers_and_members
    self.follower_count = self.followers.size
    self.member_count = self.members.size
  end

IЯ знаю, что у mongoid есть проблемы с кэшированием, но я не могу протестировать эту функцию.В консоли мне нужно вызвать reload, чтобы все заработало, но даже с перезагрузкой !, я не могу пройти тест.Сейчас я делаю глупые вещи вроде:

 test "should have one more follower when I add a follower to a group" do
    puts "starting test"
    @cali_group.members.delete_all
    @cali_group.save
    @cali_group.reload
    assert_equal 0, @cali_group.member_count
    @cali_group.members << @user1
    @cali_group.save
    @cali_group.reload
    assert_equal 1, @cali_group.member_count
  end

В моей оболочке отладчика я могу заставить это работать нормально, но не в тесте.Я не могу получить @ cali_group.member_count с чем-либо большим, чем 0.

Все соответствующие файлы можно увидеть полностью в https://gist.github.com/1206070

...