Пользователь может подписаться или присоединиться ко многим группам, и мне нужно отсортировать группы по наиболее популярным.
Чтобы сделать это эффективно, я создал следующий обратный вызов:
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