搜索日期栏

时间:2017-12-01 06:36:46

标签: ruby-on-rails ruby

如何以字符串格式搜索日期,但数据库中的值是整数示例December,即12-1-2017。我想要返回12月份的所有日期 格式为12-1-2017,但我在视图中将其输出为date.try(:strftime, "%B %d, %Y")

模型

scope :search_query, lambda { |query|

  return nil  if query.blank?

  terms = query.downcase.split(/\s+/)

  terms = terms.map { |e|
    (e.gsub('*', '%') + '%').gsub(/%+/, '%')
  }

  num_or_conds = 2
  where(
    terms.map { |term|
      "(LOWER(reserve.date) LIKE ?)"
    }.join(' AND '),
    *terms.map { |e| [e] * num_or_conds }.flatten
  )
}

1 个答案:

答案 0 :(得分:1)

也许你应该建立一个range query condition

整个想法是,使用ruby Date class来构建日期对象

Date.parse('December')
=> #<Date: 2017-12-01 ((2458089j,0s,0n),+0s,2299161j)>

irb控制台中试验所有适合您需求的方法

正如answer中的Sajid Rabbani所述,将查询作为范围执行。如果用户只想要一天,那么您可以在里面设置if条件或使用相同的start_dateend_date

scope :date_range, -> (start_date, end_date) { 
  .where('reserve.date < ? AND reserve.date > ?',
  start_date.to_date, end_date.to_date)
}

我没有关注你所写的所有格式,但它并不是很清楚。如果您想编写干代码,可以在method

中加入date
class Date
  def date_format
      # include your logic
  end
end