如何为 rails(使用 has_scope)编写一个范围,以查找在两个给定日期(start_date 和 end_date)之间具有 created_at 日期的订单
How to write a scope for rails (using has_scope) that finds orders that has a created_at date between two given dates(start_date & end_date)
我有一个当前范围不工作。
但确实解释了我要实现的目标。
scope :range, -> (start_date, end_date) { where("orders.created_at BETWEEN (?) AND (?)", start_date.to_date, end_date.to_date)}
我正在寻找一种方法来获取两个给定日期之间的所有订单。
我提供的参数是正确的。
http://localhost:3000/api/v1/reports/organisations/1/sales-reports?range[start_date]=2020-12-27&range[end_date]=2020-12-28
对于适用于我的用例的范围的任何帮助将不胜感激。
事实证明,因为我正在使用 has_scope gem。
我所需要的只是使用 'using' 选项。
has_scope :range, using: %i[start_date end_date], type: :hash
我考虑的是标准,您使用 orders.created_at
而不仅仅是 created_at
来确定范围。
此外,这使得 ActiveRecord 负责编写 SQL 而不是您自己。
scope :range, ->(start_date, end_date) { where(created_at: start_date.to_date..end_date.to_date) }
另外,我会尝试将 start_date
和 end_date
作为日期传递,因为您说的是日期,而不是日期的字符串表示形式。
我有一个当前范围不工作。
但确实解释了我要实现的目标。
scope :range, -> (start_date, end_date) { where("orders.created_at BETWEEN (?) AND (?)", start_date.to_date, end_date.to_date)}
我正在寻找一种方法来获取两个给定日期之间的所有订单。
我提供的参数是正确的。
http://localhost:3000/api/v1/reports/organisations/1/sales-reports?range[start_date]=2020-12-27&range[end_date]=2020-12-28
对于适用于我的用例的范围的任何帮助将不胜感激。
事实证明,因为我正在使用 has_scope gem。
我所需要的只是使用 'using' 选项。
has_scope :range, using: %i[start_date end_date], type: :hash
我考虑的是标准,您使用 orders.created_at
而不仅仅是 created_at
来确定范围。
此外,这使得 ActiveRecord 负责编写 SQL 而不是您自己。
scope :range, ->(start_date, end_date) { where(created_at: start_date.to_date..end_date.to_date) }
另外,我会尝试将 start_date
和 end_date
作为日期传递,因为您说的是日期,而不是日期的字符串表示形式。