Prettier ActiveRecord where query



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

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

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

您可以使用lambda:将其转换为作用域

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

我认为通过实际日期的论点比通过年份整数要好,但这是单独讨论的

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

最新更新