Я обнаружил, что следующий метод является пользователем памяти HEAVY на Ruby 1.8.7 и не дает абсолютно никаких результатов (когда должно быть много). Метод также работает как прелесть в Ruby 1.9.2, возвращая все желаемые результаты, не потребляя при этом никакой памяти (или около того!). Я думаю, это потому, что локальная переменная имеет то же имя, что и содержащий метод, но у кого-нибудь есть четкий ответ на этот вопрос?
def contact_of
contact_of = Circle.joins(:ties).where('ties.contact_id' => self.guid).map { |circle| circle.owner } || []
return contact_of.uniq!
end
Кстати, я использую Rails 3.1.1.
Спасибо!
ОБНОВЛЕНИЕ : часть вопроса ошибочна. Тот факт, что контакты не возвращаются, когда это должно произойти, является моим неправильным пониманием слова «uniq!» вместо «uniq». Первый возвращает nil, если дубликаты не найдены.
Все еще пытаюсь выяснить проблему с памятью ...