我有一个配置文件表,列名为videoconfavailability,是一个日期时间类型。我正在尝试制作一个Ajax button_tag来搜索Time.now中1小时和Time.now前1小时的所有视频可用性。 到目前为止,我在这里有这一行,是否有一个NOT子句来过滤掉其他条件?
Profile.where("videoconfavailability <= ? AND videoconfavailability >= ?", Time.now + 1.hour , Time.now - 1.hour )
这里的最终目标是让所有时间在当前时间前1小时和当前时间后1小时可用。 这会起作用吗?
答案 0 :(得分:0)
对我来说看起来不错 - 也许你可以解释一下你遇到的问题!
在使用它时,您可以考虑创建与Profile
模型相关联的范围。如果您需要使用不同的时间范围,它可能会接受arguments
。如果没有,那么只需对其进行硬编码,以便在重复使用时一次又一次地使用它。
scope :available_within_time, -> (start, end) { where("videoconfavailability <= ? AND videoconfavailability >= ?", start, end )
正如您在问题中所写的那样,或许可以考虑使用Rails时间助手来使事情变得更加简洁。
1.hour.ago
1.hour.from_now
如果您想过滤掉否定匹配以检查其他条件,可以将.where.not(QUERY)
链接到现有查询。