假设我有一个 Post 模型和一个 Comment 模型。使用通用模式,发布 has_many Comments。
如果 Comment 设置了 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;
我理解 unscoped 删除所有现有范围的基本原则,但不应该知道并保持关联范围吗?
提取所有评论的最佳方式是什么?