2013-12-14 72 views
0

我有一個場景,我有一個叫做客戶端的activerecord模型。這些客戶端有一個叫做order的屬性。現在,我們假設有10個客戶訂購1-10個。如果我創建了一個新客戶端並且想要給它3的順序,我必須手動更改所有其他客戶端。ActiveRecord屬性動態變化?

在這種情況下,是有辦法,如果我沒有創建一個新的客戶端,並以3順序分配給它,每一個客戶端誰的順序爲:> = 3會添加一個到它的原有順序?

從社區,我看到排名順序是值得探討的問題。我也在管理員(activeadmin列)中顯示客戶端的順序。比方說,我們有那些10個客戶,我決定採取5號,並將其移到3號。我知道按照排名順序也將相應更改順序,但它也是在管理員更改順序的列,其中新號碼後,所有客戶端2將被擊倒一個點?

回答

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 

只有當兩個記錄之間的空間用完時,它必須修改多個空間才能騰出更多空間。

+0

我使用activeadmin並允許管理員手動更改客戶端的位置。因此,如果管理員進入並將客戶從訂單5更改爲訂單2,則使用排名模型,這將如何動態更改所有其他客戶?雖然排名模式可能會在幕後改變這種情況,但它會更新activeadmin嗎? – user2184718

+0

排名模型將檢查當前客戶#1和#2分開多遠,然後將客戶#5的位置更改爲它們之間的正確位置。 – janfoeh

+0

但在用戶看到訂單列出1,2,3,4等的管理員中,這些數字是否也會更新?例如,過去是4的地方現在變成了5? – user2184718