2013-08-04 63 views
0

我寫了一個方法來檢索在給定年份內創建的所有文章。更漂亮的ActiveRecord查詢

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

此方法感覺有點笨重和低級別。它能以更好的方式實施嗎?

+1

對我來說,看起來並不笨重或低層次。 –

+1

你應該看看這個[question](http://stackoverflow.com/questions/9624601/activerecord-find-by-year-day-or-month-on-a-date-field) – mdemolin

+0

我認爲你的方法是寫,而@keymone已經給出了更多的'軌道'的方式:) – sameera207

回答

3

,你可以把它轉換成範圍與拉姆達:

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

我認爲,經過實際的日期的說法是不是一年比一年整數更好,但是這是單獨討論

也可以使用Time.mktime方法來創建日期對象,strptime通常很慢