default_scope и ассоциации

Предположим, что у меня есть модель Post и модель Comment. Используя общий шаблон, Сообщение has_many Комментарии.

Если Комментарий имеет набор default_scope:

default_scope where("deleted_at IS NULL")

Как я легко получаю ВСЕ комментарии к сообщению, независимо от объема? Это приводит к недопустимым результатам:

Post.first.comments.unscoped

Который генерирует следующие запросы:

SELECT * FROM posts LIMIT 1;
SELECT * FROM comments;

Вместо:

SELECT * FROM posts LIMIT 1;
SELECT * FROM comments WHERE post_id = 1;

Выполнение:

Post.first.comments

Производит:

SELECT * FROM posts LIMIT 1;
SELECT * FROM comments WHERE deleted_at IS NULL AND post_id = 1;

Я понимаю основной принцип неограниченного по объему удаления всех существующих объемов, но разве это не должно знать и сохранять объем ассоциации?

Что лучший способ состоит в том, чтобы вытянуть ВСЕ комментарии?

25
задан releod 18 October 2010 в 20:30
поделиться