gpt4 book ai didi

sql - 当常规 where() 查询执行时,Rails 范围不起作用

转载 作者:行者123 更新时间:2023-12-04 05:55:35 24 4
gpt4 key购买 nike

我试图在我的 Products 中构建一个相对简单的命名范围类(class)。奇怪的是,如果我直接发出查询(a la Product.where()),我会得到我期望的结果。但是,如果此查询更改为 scope声明,结果集为nil .

为什么我的查询在直接调用时有效,但在将其放入作用域时不产生任何结果?这是实际的代码:

scope :is_queued, where("status = 2 OR (status = 0 AND status_expires > ?)", DateTime.now )# <-- returns nil
Product.where("status = 2 OR (status = 0 AND status_expires > ?)", DateTime.now) # <-- returns 1+ results (as expected)

谢谢!

汤姆

最佳答案

scope 定义的范围被评估一次,当 scope已定义 - 所以 DateTime.now指的是您的应用程序实例首次启动的时间。

尝试:

scope :is_queued, lambda { where("status = 2 OR (status = 0 AND status_expires > ?)", DateTime.now) }

关于sql - 当常规 where() 查询执行时,Rails 范围不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9547013/

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