我编写了一种方法来检索在给定年份内创建的所有文章。
def articles_for_year(year)
from = Date.strptime("#{year}-01-01").to_datetime
to = from.end_of_year
where(created_at: from..to)
en
这种方法感觉有点笨拙和低级别。它能以更好的方式实施吗?
答案 0 :(得分:3)
您可以使用lambda将其转换为范围:
class Article
scope :in_year, -> {|year| where created_at: (year.beginning_of_year..year.end_of_year) }
end
我认为传递实际日期参数比传递年份整数更好,但这是单独的讨论
你也可以用Time.mktime
方法创建日期对象,strptime
通常很慢