0

我编写了一种方法来检索在给定年份内创建的所有文章。

def articles_for_year(year)
  from = Date.strptime("#{year}-01-01").to_datetime
  to = from.end_of_year
  where(created_at: from..to)
en

这种方法感觉有些笨拙和低级。它可以以更好的方式实现吗?

4

1 回答 1

3

您可以使用 lambda 将其转换为范围:

class Article
  scope :in_year, -> {|year| where created_at: (year.beginning_of_year..year.end_of_year) }
end

我认为传递实际日期参数比传递年份整数更好,但这是单独讨论

您也可以使用Time.mktime方法创建日期对象,strptime通常很慢

于 2013-08-04T21:46:13.333 回答