在我的應用程序,我有幾個clients
,並且他們有幾個elements
(通過has_many_through
協會)根據一定的BusinessType
到Client
屬於讓,而不是手動添加所有elements
到Client
,我可以選擇BusinessType
,並且所有內容都會自動添加(business_type
,Client
爲attr_readonly
)。 BusinessType
HABTM elements
。獲取先前HABTM值
這裏的漁獲,默認BusinessType
創建後,客戶端可以更新其內容,並刪除或添加隨心所欲(主要是增加),所以我想要做的是以下幾點:
假設一個business_type
具有元素[1,2,3]
並被分配到一個client
,然後,將以下元素手動添加到client
= [4,5,6]
,所以它最終具有[1,2,3,4,5,6]
,確定一切都很好。
但是在此之後,business_type
得到更新,並刪除了元素2
,因此它最終成爲[1,3]
。事情是這樣的,我想在客戶端通過移除2
被更新,但不是[4,5,6]
,使其最終[1,3,4,5,6]
不對應business_type
問題,我使用的是after_update
回調更新clients'
元素,但_was
方法不HABTM關係的工作(讓老business_type's
元素。
我使用before_update
回調先client.elements = client.elements - business_type.elements
瞬間存儲在數據庫[1,2,3,4,5,6] - [1,2,3] = [4,5,6]
嘗試,並在after_update做client.elements = client.elements + business_type.elements
得到[4,5,6] + [1,3] = [1,3,4,5,6]
但這已經有了新的價值[1,3]
。怎樣才能得到舊的在before_update
或after_update
的3210值?
在此先感謝您的幫助!