ruby-on-rails - 获取一个月内所有活跃项目

标签 ruby-on-rails

在我的 Rails 应用程序中,我有一些带有 start_dateend_date 的项目。现在我创建了一个名为 active_projects 的方法,它检索该特定月份内的所有项目。我可以使用 2 个参数(monthyear)调用该方法,如下所示:

def self.active_projects(month, year)
  ...
end

这意味着任何在一个月内有部分处于事件状态的项目都被视为处于事件状态。 现在假设我想要获取 2014 年 2 月以来的所有事件项目,我有这 4 个项目:

project1(start_date: 01-01-2014, end_date: 31-12-2014)
project2(start_date: 01-01-2014, end_date: 15-02-2014)
project3(start_date: 16-02-2014, end_date: 19-02-2014)
project4(start_date: 20-02-2014, end_date: 31-12-2014)

正如您所看到的,本月只有project3完全失败,其他项目只有部分失败,但都应该被视为活跃。我如何获得所有这些重叠的开始日期和结束日期?

而且您不能只使用 Date.today,因为我也可以询问过去或将来的一个月。

最佳答案

如果项目的开始日期在月底或之前并且结束日期在月初或之后,则项目处于事件状态。

然后:

Project.where("start_date <= ? and end_date >= ?",
              Date.new(2013,4,1).end_of_month,
              Date.new(2013,4,1))

以范围形式,我想:

scope :active_in_month, ->(year,month){where("start_date <= ? and end_date >= ?",Date.new(year,month,1).end_of_month,Date.new(year,month,1))}

然后调用:

Project.active_in_month(2014,3)

关于ruby-on-rails - 获取一个月内所有活跃项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21431311/

相关文章:

ruby-on-rails - 尝试运行 rspec 时出错 : `require' : cannot load such file -- rails_helper (LoadError)

java - 如何使用暂停/恢复支持上传到 S3?

ruby-on-rails - Rails has_many 并且属于一个

ruby-on-rails - Ruby on Rails 对象保存为空值

mysql - Rails 更改 MySQL 和 Postgres 的列类型迁移

ruby-on-rails - 为什么 postgresql 9.1 不能与 rails 3.0 一起使用?

ruby-on-rails - Rails - 如何使用表单上的隐藏字段来传递与在表单上创建的对象相关的对象的值?

ruby-on-rails - 带有 accepts_nested_attributes_for 的 Mongoid 自引用

ruby-on-rails - Heroku 安装 app sushi ,将数据库推送到 Heroku

ruby-on-rails - 多数据库连接