2014-09-12 86 views
1
second = Trade.with_currency(currency).h24.order('id desc').limit(1).offset(1).try(:price) 
    first = Trade.with_currency(currency).h24.order('id desc').first.try(:price) 

我想獲得第一行和第二行的價格。第一個是工作,但我有問題得到第二排。通過上面的查詢,我得到零回。從Rails範圍獲取第二行

當我在mysql中做查詢第二行直接被工作:

SELECT `trades`.* FROM `trades` WHERE `trades`.`currency` = 5 AND (created_at > '2014-01-11 16:20:06') ORDER BY id desc LIMIT 1 OFFSET 1; 

回答

0
 prev = Trade.with_currency(currency).order('id desc').limit(1).offset(1).first.try(:price) 

這是解決方案 - 我添加選擇第一個結果抵消1.

+0

你能解釋一下你所做的改變嗎?一個簡短的解釋通常可以幫助OP理解爲什麼代碼不起作用。 – tjameson 2014-09-12 15:49:49

0

offset(1)在聲明中添加first

它就會像

second = Trade.with_currency(currency).h24.order('id desc').limit(1).offset(1).first.try(:price) 
+0

這並沒有幫助。當我向查詢中添加限制或偏移量時,我會立即得到一個錯誤。 – domi771 2014-09-12 14:59:56

+0

你可以顯示什麼錯誤 – Sushant 2014-09-12 15:03:35

0

如果你只需要值:

Trade.with_currency(currency).h24.order('id desc').pluck(:price).first(2) 

pluck方法獲取剛剛價值觀和first(2)被用來拉前兩個值。