【问题标题】:Rails scope between two dates in a model模型中两个日期之间的 Rails 范围
【发布时间】:2019-09-16 21:07:33
【问题描述】:

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

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


【解决方案1】:

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

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 ...)

【讨论】:

  • 感谢您的回复,但我应该使用这个|start_date, end_date| 吗? rubocop 显示语法错误。
  • 这取决于,有什么错误?请注意,rubocop 需要 lambda { |something| ...-&gt;(something) { ... 语法
猜你喜欢
  • 2023-03-30
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
相关资源
最近更新 更多