gpt4 book ai didi

ruby - 为什么在事件记录范围内使用 lambda

转载 作者:数据小太阳 更新时间:2023-10-29 08:17:40 24 4
gpt4 key购买 nike

我正在阅读 Beginning Rails 3。这本书创建了一个项目,用户可以在其中发布文章。现在在 Article 对象中,他们创建了 3 个范围,如下所示:

scope :published, where("articles.published_at IS NOT NULL")
scope :draft, where("articles.published_at IS NULL")
scope :recent, lambda { published.where("articles.published_at > ?", 1.week.ago.to_date)}

现在我可以用这个 scope 语句替换最后一个 lambda 函数,我得到相同的结果:

scope :recent, where("published_at > ?", 1.week.ago.to_date)

在这里使用 lambda 有什么好处?

最佳答案

如果您不使用 lambda,时间 1.week.ago 将在应用程序启动时计算并缓存。因此,即使您的应用程序已经运行了几个月,它仍会指向应用程序启动前 1 周的时间。

您在开发环境中不会注意到这一点,因为应用程序代码会在每次请求时重新加载。使用 lambda,您可以确保每次调用您的范围时,它都是最新计算的,即使在生产环境中也是如此。

关于ruby - 为什么在事件记录范围内使用 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11385057/

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