我的项目模型有start_date
和end_date
。我想过滤范围为start_year
和end_year
的项目。
目前的实施:
class Project < ActiveRecord::Base
...
def self.date_range(start_year, end_year)
end
end
答案 0 :(得分:1)
假设你的start_date,end_date是所有DateTime对象和start_year,end_year只是年份的值,例如2013年,2014年等,查询应如下所示。
Project.where('EXTRACT(YEAR from start_date) <= ? AND EXTRACT(YEAR from end_date) >= ?', start_year, end_year)
答案 1 :(得分:0)
您可以使用AREL dsl来构建SQL查询,如下所示:
class Project < ActiveRecord::Base
scope :in_date_range, ->(start_year, end_year) do
where(arel_table[:start_date].gt(start_year).and(arel_table[:end_date].lt(end_year))
end
end
然后像
一样使用它Project.in_date_range(start, end)
将返回指定范围内的项目