我有一個模型CounterRecord
和列有data
。記錄清單:什麼是獲得記錄的列之間的差異最好的方法
r1.data = 10
r2.data = 12
r3.data = 15
r4.data = 20
我想獲得當前和以前的記錄[10,2,3,5]
之間的差異。 Rails有默認的方式嗎?
我有一個模型CounterRecord
和列有data
。記錄清單:什麼是獲得記錄的列之間的差異最好的方法
r1.data = 10
r2.data = 12
r3.data = 15
r4.data = 20
我想獲得當前和以前的記錄[10,2,3,5]
之間的差異。 Rails有默認的方式嗎?
我不認爲Rails
或ActiveRecord
有這樣的東西,但它可以與紅寶石的一點很容易做到:
CounterRecord.pluck(:data).each_with_index.map { |c,i| a[0] == c ? c : (a[i-1].to_i - c).abs }
我認爲它應該工作的更快。謝謝。 – Roman
做鐵軌有默認的方式嗎?
號
可能的解決辦法:
CounterRecord.pluck(:data).each_cons(2).map { |first, second| second - first }
注:大金額的記錄,這將輕易的殺死你的記憶。
@Ilya是真的。編輯 –
我早些時候嘗試過'each_slice',它沒有給你想要的輸出..你執行它嗎? –
@ Md.FhanhanMemon,可能你應該在'each_slice'之後使用'.to_a'。 – Ilya
沒有默認的方式來做到這樣。
我不認爲* Rails * a有默認方式。你需要使用普通的* SQL *。 – Pavan