gpt4 book ai didi

ruby - Rails 3 范围查询

转载 作者:太空宇宙 更新时间:2023-11-03 16:31:13 25 4
gpt4 key购买 nike

我有一个名为“SessRequest”的模型,其中包含字段“sess_start”( session 的开始日期时间)和“sess_duration”(以小时为单位的 session 持续时间)。因此, session 的结束时间为:sess_start + sess_duration.hours我需要过滤掉所有“结束时间”晚于当前时间的 session 。为此,相应的模型范围如下所示:

SESSION_ASSUMED_PAST_AFTER_HRS = 3
scope :past,
lambda{where('(sess_start < :current_time) AND (sess_start IS NOT NULL)', :current_time => 0.days.from_now - SESSION_ASSUMED_PAST_AFTER_HRS.hours)};

我想使这个范围基于“sess_duration”数据库字段而不是常量 SESSION_ASSUMED_PAST_AFTER_HRS。如何在保持数据库不可知的同时做到这一点?

最佳答案

您可以使用 squeel gem 用于创建复杂的 SQL 查询和各种 RDBMS 系统。

您的代码将如下所示:

SESSION_ASSUMED_PAST_AFTER_HRS = 3
scope :past, where { (sess_start < SESSION_ASSUMED_PAST_AFTER_HRS.hours.ago) & (sess_start != nil ) }

关于ruby - Rails 3 范围查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15608947/

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