? and end_time (start_time) do -6ren">
gpt4 book ai didi

ruby-on-rails - 如何检查范围 rails 中是否存在参数

转载 作者:行者123 更新时间:2023-12-03 09:02:25 25 4
gpt4 key购买 nike

scope :created_after, ->(start_time,end_time) { where("start_time > ? and end_time <?", start_time,end_time) }

我想添加 if 条件,如果开始时间存在,则仅 start_time 查询运行,如果 end_time 则其查询运行

最佳答案

我认为 created_after 是您想要对 created_after 范围执行的操作的更好名称。

您可以创建两个辅助作用域来使用 start_timeend_time 列过滤结果。

scope :created_after, ->(start_time) do
where("start_time > ?", start_time)
end

scope :created_before, ->(end_time) do
where("end_time < ?", end_time)
end

然后你可以按照你想要的方式组合它们:

scope :created_between, ->(start_time, end_time) do
query = self.all
query = query.created_after(start_time) if start_time
query = query.created_before(end_time) if end_time
query
end

如果您执行查询,为任何范围参数提供nil,它将忽略它们。例如:created_ Between(nil, nil) 将不会产生额外的查询。

关于ruby-on-rails - 如何检查范围 rails 中是否存在参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49315019/

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