比较Rails ORM中的年份和月份

时间:2013-12-09 05:38:28

标签: sql ruby-on-rails date orm

我刚开始学习使用Rails,并且在Django方面有相当丰富的经验。我正在尝试将一个相当常见的查询转换为Rails ORM,但似乎无法找到对数据库无关解决方案的良好引用。

我想要做的是将created_at字段的日期或月份与从网址提交的文本进行比较。在Django中这很简单:

if kwargs.get('year', False):
    # Filter by year
    post_list = Post.objects.filter(posting_date__year = kwargs['year'])
    # Futher filter by month if applicable
    if kwargs.get('month', False):
        post_list = post_list.filter(posting_date__month=kwargs['month'])

我似乎无法找到一个简单的数据库独立解决方案来在Rails中做同样的事情。请注意,我强调数据库无关部分;我当然可以为此编写自己的SQL,但我在代码和数据库的抽象方面表现得很好。

1 个答案:

答案 0 :(得分:0)

这可行吗

def self.by_year(year)
  dt = DateTime.new(year)
  boy = dt.beginning_of_year
  eoy = dt.end_of_year
  where("published_at >= ? and published_at <= ?", boy, eoy)
end

但我不确定这是最好的方式。