gpt4 book ai didi

ruby-on-rails - default_scope 和关联

转载 作者:行者123 更新时间:2023-12-03 10:25:28 25 4
gpt4 key购买 nike

假设我有一个 Post 模型和一个 Comment 模型。使用一种常见的模式,发布 has_many 评论。

如果 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;

我了解无范围删除所有现有范围的基本原则,但它不应该知道并保留关联范围吗?

提取所有评论的最佳方法是什么?

最佳答案

由于一些奇怪的原因,

Comment.unscoped { Post.last.comments }

包括 default_scopeComment ,

然而,
Comment.unscoped { Post.last.comments.to_a }
Comment.unscoped { Post.last.comments.order }

不是 包括 default_scopeComment .

我在 rails console 中经历过这种情况与 Rails 3.2.3 的 session .

关于ruby-on-rails - default_scope 和关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3963124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com