當你想從來看, 您可以使用軌道的動態範圍來實現這一目標的模式來看實現這一目標,
在模型中,
方法一:
class Vote < ActiveRecord::Base
scope :average_score, ->(date1,date2) { where(date: (date1)..(date2))}
end
現在,在您的控制器或視圖上,您可以調用類似於
@average = Vote.average_score(Date.today - 7 , Date.today).average(:id)
方法2:
您可以採取的方法和調用從法的範圍。現在
class Vote < ActiveRecord::Base
scope :average_score, ->(date1,date2) { where(date: (date1)..(date2))}
def self.average_score_value(d1, d2)
self.average_score(d1,d2).average(:id)
end
end
,控制器或視圖上,你可以調用類似,
@average = Vote.average_score_value(Date.today - 7 , Date.today)
下面是一個例如與用戶表,我已created_at
列
2.3.1 :036 > User.average_score(Date.today - 7,Date.today).average(:id)
(0.5ms) SELECT AVG(`users`.`id`) FROM `users` WHERE (`users`.`created_at` BETWEEN '2016-10-19' AND '2016-10-26')
=> nil
範圍是
scope :average_score, ->(date1,date2) { where(created_at: (date1)..(date2))}
Here is the reference
而是模型屬性的,你可以寫在模型中一個類的方法,接受起始日期日期和結束日期作爲參數。 – Santhosh
感謝您的幫助,所以如果我創建了這個方法,那我該如何讓用戶提交自己的start_date和end_date的值? – user2320239