首页 > 解决方案 > 模型中两个日期之间的 Rails 范围

问题描述

我想定义一个范围以在初始化程序中使用它,它将表示类似

class GenerateCsv 
   def itnialize(start_date:, end_date:)
     ,,,
   end 

   def call 
     AdminLog.dates_between(start_date, end_date).each do |record| 
       Csv.generate ...
     end
   end
 end

如何定义此dates_between范围以在调用方法中使用它?

在我的AdminLog model我有created_at应该用来定义这个范围的字段

model

# created_at  :datetime         not null

class AdminPanelLog < ApplicationRecord
  scope :dates_between { |start_date, end_date| }
end

标签: ruby-on-rails

解决方案


我不确定我是否理解你,但也许这就是你想要的?

scope :dates_between, lambda { |start_date, end_date|
  where('created_at >= ? AND created_at <= ?', start_date, end_date)
}

编辑:请注意,您可以使用where(created_at: start_date..end_date)创建“介于”查询 ( WHERE created_at BETWEEN ... AND ...) 来代替


推荐阅读