ActiveRecord属性动态变化?

时间:2013-12-14 14:30:42

标签: ruby-on-rails activerecord

我有一个场景,我有一个名为client的activerecord模型。这些客户端具有称为订单的属性。现在,让我们假设有10个客户订购1-10。如果我创建一个新客户端并希望给它3个订单,我必须手动更改所有其他客户端。

在这种情况下,有没有办法,如果我创建了一个新的客户端并为其分配订单为3,那么订单的每个客户都是> = 3会在其原始订单中添加一个?

从社区来看,我看到排名顺序是值得研究的。我还在admin(activeadmin列)中显示客户端的顺序。假设我们有10个客户,我决定将5号线移到3号。我意识到排名顺序会相应地改变订单,但是它也会更改管理员中的订单列,其中所有客户都会在新号码2之后撞到一个地方?

1 个答案:

答案 0 :(得分:0)

我建议你看看ranked-model,因为它非常巧妙。

想象一下,你有三个客户。而不是给它一个连续的位置

Client#1: position 1
Client#2: position 2
Client#3: position 3

它之间留下了巨大的空白:

Client#1: position -10000
Client#2: position 10000
Client#3: position 20000

这样,如果一个位置发生变化,大多数情况下只需更新一个已更改的记录:

    Client#3: position 5000 -> second place

只有当两个记录之间的空间不足时,才需要修改多个记录才能腾出更多空间。