2017-08-08 30 views
-1

我正在使用Rails 5和PostGres 9.5。我想在我的模型中搜索過去至少一年的條目,然後返回至少一年前的最新條目。如果沒有這樣的條目,我不想返回任何結果。我在我的模型創造了這個...如何編寫一個至少返回一年的查找方法,但是如果沒有這樣的入口,那麼該怎麼辦?

def self.year_change(from_date) 
    CryptoIndexValue. 
      where('index_date > ?', from_date - 1.years). 
      order(:index_date). 
      take 
    end 

,但是當我把這個跟今天的日期,我得到一個結果......

id | value |   index_date   |   created_at   |   updated_at 
----+-------+----------------------------+----------------------------+---------------------------- 
    2 |  0 | 2017-07-30 15:51:52.118646 | 2017-07-30 15:51:52.147113 | 2017-07-30 15:51:52.147113 

注意「index_date」在返回的是剛剛幾天之前。我如何調整我的finder方法,使其只返回至少一年的條目,否則不返回任何結果?

+2

但是'index_date' *爲*比一年前更大的...也許你不想'是上述index_date's一年前。這是一個暗示。 –

+0

我被困在我的腦海裏,我無法看到你在說什麼。我在上面看到索引日期爲「2017-07-30 15:51:52.118646」。這似乎在一年內給我。你指的是什麼? – Dave

+0

...正在'2017-07-30> 2016-08-08'? –

回答

0

我覺得對現在應該解決的問題留下一個答案是「不道德的」,因此您不應該將其標記爲正確的答案。但如果你還沒有解決它已經:

2016年是於2017年小,爲此所有超過1年於一切造就了今天小:

Date.today - 2.years < Date.today 
=> true 

你的代碼目前規定的日期項目被創建爲大於-1.years,它不會返回任何內容,因爲它是錯誤的。

因此改變:

where('index_date > ?', from_date - 1.years). 

要:

where('index_date < ?', from_date - 1.years). 
相關問題