2017-05-29 77 views
-1

我有一個模型CounterRecord和列有data。記錄清單:什麼是獲得記錄的列之間的差異最好的方法

r1.data = 10 
r2.data = 12 
r3.data = 15 
r4.data = 20 

我想獲得當前和以前的記錄[10,2,3,5]之間的差異。 Rails有默認的方式嗎?

+0

我不認爲* Rails * a有默認方式。你需要使用普通的* SQL *。 – Pavan

回答

2

我不認爲RailsActiveRecord有這樣的東西,但它可以與紅寶石的一點很容易做到:

CounterRecord.pluck(:data).each_with_index.map { |c,i| a[0] == c ? c : (a[i-1].to_i - c).abs } 
+0

我認爲它應該工作的更快。謝謝。 – Roman

1

做鐵軌有默認的方式嗎?


可能的解決辦法:

CounterRecord.pluck(:data).each_cons(2).map { |first, second| second - first } 

注:大金額的記錄,這將輕易的殺死你的記憶。

+0

@Ilya是真的。編輯 –

+0

我早些時候嘗試過'each_slice',它沒有給你想要的輸出..你執行它嗎? –

+0

@ Md.FhanhanMemon,可能你應該在'each_slice'之後使用'.to_a'。 – Ilya

相關問題