Se você tiver dois modelos: Post e Comment. Onde Post tem muitos (has_many) comentários. Se você executar:
Post.first.comment_ids
O Rails usará a seguinte query para recuperar os ids:
SELECT * FROM `comments` WHERE (`comments`.post_id = 1)
Mas neste caso, não precisamos dos objetos inteiros. A seguinte query seria mais do que suficiente para o funcionamento deste método, além de possuir uma performance melhor:
SELECT `comments`.id FROM `comments` WHERE (`comments`.post_id = 1)
Tanto para associações has_many, como para associações has_many :through o código foi alterado para incluir esta melhora de performance a partir do Rails 2.2.
Este artigo pertence a série “Edge Rails”. Todos os exemplos dados aqui funcionarão somente no Ruby on Rails 2.2 ou superior. A intenção desta série é preparar antecipadamente os programadores para as próximas versões do framework.