mysql - 如何将 GET 参数从自定义日期格式转换为数据库日期格式?

标签 mysql ruby-on-rails ruby datetime activerecord

在我的发票模型的index View 中,我有一个用户可以用来过滤发票的表单> 按某些标准:

<%= form_tag invoices_path, :method => 'get' do %>

    <%= text_field_tag :number, params[:number] %>

    <%= text_field_tag :after, params[:after] %>
    <%= text_field_tag :before, params[:before] %>

    <%= text_field_tag :min, params[:min] %>
    <%= text_field_tag :max, params[:max] %>

    <%= submit_tag "Search", :name => nil %>

<% end %>
<小时/>
class InvoicesController < ApplicationController

  def index
    @invoices = current_user.invoices.search(params)
  end

  ...

end
<小时/>
class Invoice < ActiveRecord::Base

  belongs_to :user

  def self.search(params)
    data = all
    data = data.number_contains(params[:number]) if params[:number]

    data = data.date_is_after(params[:after]) if params[:after]
    data = data.date_is_before(params[:before]) if params[:before]

    data = data.total_is_more_than(params[:min]) if params[:min]
    data = data.total_is_less_than(params[:max]) if params[:max]

    data
  end

  def self.date_is_after(date)    
    where("date >= ?", date)
  end

  def self.date_is_before(date)    
    where("date <= ?", date)
  end

  ...

end

问题是,要按日期过滤发票,用户必须以数据库使用的格式输入 afterbefore 参数,即 YYYY-MM-DD 这对用户来说相当麻烦。

如何让用户可以按照他的 preferences 记录的 date_format 列中指定的首选 date_format 进行搜索,例如%d.%m.%Y%m/%d/%Y

如果搜索表单接受该自定义日期格式,那就太好了。

如何实现这一目标?

感谢您的帮助。

最佳答案

我建议你Date.parse:

▶ d = Date.parse '12/08/2014'
# => #<Date: 2014-08-12 ((2456882j,0s,0n),+0s,2299161j)>
▶ d = Date.parse '12.08.2014'
# => #<Date: 2014-08-12 ((2456882j,0s,0n),+0s,2299161j)>

然后简单地:

▶ d.to_s
# => "2014-08-12"

希望有帮助。

关于mysql - 如何将 GET 参数从自定义日期格式转换为数据库日期格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24959261/

相关文章:

c# - MySQL:如何在SQL语句中包含@,并且它不被解释为参数?

ruby-on-rails - Ruby 和 Rails 在星期几上存在差异?

ruby-on-rails - 从 rails-geocoder gem 中的 Controller 获取纬度和经度值

mysql - 在SmartFoxServer中配置MySQL服务器连接

php - Laravel Eloquent从belongsToMany()查询中排除特定结果

php - tax_query 不适用于 WP_Query

ruby-on-rails - 如何在 Rails 中创建全局可访问的模块?

ruby-on-rails - validates_uniqueness_of 的条件验证消息

ruby-on-rails - 如何从单个事件记录对象获取列值

ruby - 以编程方式访问 Resque 失败作业队列