2013-12-16 185 views
0

有沒有辦法在rails模型中動態更改屬性?動態更改模型屬性

這是我目前的場景。我有一個內部有五個客戶的客戶模型。這些客戶端有:

attr_accessible :name, :image, :order 

訂單屬性是這樣的,客戶端可以以管理員希望他們顯示的順序顯示。

因此,五個客戶端中的每一個都有一個1,2,3,4或5的順序。假設我創建了另一個客戶端並希望客戶端的順序爲4.如果我這樣做我知道如何,客戶訂單將是1,2,3,4(新4),4(舊4),5。

我想要發生的是,最後兩個客戶有一個1添加到他們的訂單,所以客戶訂單將看起來像1,2,3,4(新4),5(舊4),6 (老5)。

這種方式對我來說會更簡單,因爲客戶端列表變得越來越大,只需添加希望他們順序排列的新客戶端,並讓其他客戶端的訂單動態更改。

回答

2

如果你沒有你會如何自己做,下面的Rails代碼已經很清楚:

Client.all.update_all('sort_order = sort_order+1', ['sort_order >= ?', inserted_order]) 

將增加一到的所有客戶記錄,其順序爲:大於或等於sort_order屬性到inserted_order

注意:我將order屬性更改爲sort_order以避免與SQL關鍵字衝突。請注意,爲什麼這對你來說不是問題。

+0

什麼是插入命令在這裏?並且是> =?也等於插入命令?這也會影響當前的客戶端,因爲在我的例子中它仍然> = 4. – user2184718

+0

它代表了你想要插入「at」的順序(例如,在OP的例子中是4)。 –

+0

此代碼是否會影響order => 4的實例?或者只是舊的? – user2184718