ruby-on-rails - Rails - 是两个日期之间的日期吗?

标签 ruby-on-rails ruby-on-rails-3

我正在创建一个需要确保计划的“行程”不会重叠的系统。为此,我试图验证 start_date 和 end_date,以确保它们不在另一次旅行的开始和结束日期内。

class TripdateValidator < ActiveModel::EachValidator

  def validate_each(object, attribute, value)

      # Check value exists as end_date is optional
      if value != nil

          parsed_date = Date.parse(value)

          # is the start date within the range of anything in the db
         trips = Trip.where(['start_date >= ? AND end_date <= ? AND user_id = ?', parsed_date, parsed_date, object.user_id])

        # overlapping other trips, aghhh
        object.errors[attribute] << 'oh crap' if trips
      end
  end
end

日期来自 type="date"字段,该字段由 jQuery UI Datepicker 提供支持并包含格式 2011-01-01。这在 2011-01-30 00:00:00 UTC 时进入了 rails ,我不完全理解。

如果我尝试在这个值上使用 Date.parse() 它会给出错误:

TypeError in TripsController#create

$_ value need to be String (nil given)

Rails.root:
/Users/phil/Sites/travlrapp.com
Application Trace | Framework Trace |
Full Trace

app/models/trip.rb:29:in
validate_each'
app/controllers/trips_controller.rb:75:in
create'
app/controllers/trips_controller.rb:74:in
`create'



每当我运行查询时,都不会返回任何内容。这可能是日期格式问题,是我的逻辑被破坏了还是我在做一些非常愚蠢的事情?被困在这个问题上一段时间,谷歌没有帮助。

编辑 人们关注的是 Date.parse 错误,但这不是主要问题。我卡住的地方是,当一切都采用完全不同的格式时,我不明白如何进行日期比较。

我已将 Date.parse() 换成 Chronic.parse() ,现在我生成了以下 SQL 查询:
 SELECT "trips".* FROM "trips" WHERE (start_date >= '2011-01-26 00:00:00.000000' AND end_date <= '2011-01-26 00:00:00.000000' AND user_id = 19)

这不返回任何内容。我测试的日期是:

开始: 2011-02-17 00:00:00.000000
结束: 2011-02-21 00:00:00.000000

现在我认为日期格式正确,这似乎更像是一个逻辑问题。我到底如何验证重叠日期 >。

最佳答案

Squeel 电源 FTW !!!我相信你会喜欢的

$ gem安装squeel

模型.rb

Model.where{date_colum > 10.years.ago & date_column < DateTime.now}

关于ruby-on-rails - Rails - 是两个日期之间的日期吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4774974/

相关文章:

ruby-on-rails - ActionCable 将打开多少个数据库连接?

ruby-on-rails - rails : When the "flash" hash becomes empty?

ruby-on-rails - Twilio 的未定义方法 `account'

ruby-on-rails - 如何在 Rails 3 中生成带有尾部斜杠的链接?

ruby-on-rails - CentOS + Rails + nginx + Unicorn + MySQL + RVM(?) 方法?

ruby-on-rails - rails/I18n : default scope

ruby-on-rails - 基于 URL 参数的 Rails 设置布局

ruby-on-rails - 用于个性化新闻提要的 Rails 缓存技术

ruby-on-rails - Ruby on Rails 3 单表继承还是多表继承?

ruby-on-rails - 多个 worker 的 Rails DB Performance