在我的应用程序中,我有几个clients
,并且它们有几个elements
(通过has_many_through
关联),具体取决于某个属于BusinessType
哪个Client
,因此我无需手动将所有的添加elements
到Client
,我只需选择BusinessType
并自动添加所有内容(business_type
在Client
is 中attr_readonly
)。BusinessType
HABTM elements
。
这是一个问题,在使用 default 创建后BusinessType
,客户端可以更新他们的元素并根据需要删除或添加(主要是添加),所以我想要做的是以下内容:
假设 onebusiness_type
有元素[1,2,3]
并分配给 one client
,然后,将以下元素手动添加到client
=[4,5,6]
所以它最终有[1,2,3,4,5,6]
,好的,这里一切都很好。
但在此之后,business_type
更新并2
删除了元素,所以它最终成为[1,3]
. 这是交易,我希望通过删除客户端来更新客户端2
,但不是[4,5,6]
那些与问题不对应的客户端,business_type
以便它结束[1,3,4,5,6]
,我正在使用after_update
回调来更新clients'
元素,但该_was
方法不适用于HABTM 关系(获取旧business_type's
元素。
我已经尝试使用before_update
回调 first toclient.elements = client.elements - business_type.elements
暂时存储在 DB[1,2,3,4,5,6] - [1,2,3] = [4,5,6]
中,并在 after_updateclient.elements = client.elements + business_type.elements
中获取[4,5,6] + [1,3] = [1,3,4,5,6]
,但这已经具有[1,3]
. 如何获得orbusiness_type.elements
中的旧值?before_update
after_update
在此先感谢您的帮助!