2017-05-29 29 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

相关问题