, 나는 몇 가지 clients
있고, 그들은 여러 elements
(협회 has_many_through
를 통해)이 모든 Client
에 elements
, I 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
을 제거하여 클라이언트를 업데이트하려고하지만 으로 끝나기 위해 business_type
에 해당하지 않는 [4,5,6]
이 아니라면 clients'
요소를 업데이트하기 위해 after_update
콜백을 사용하고 있습니다. _was
방법은
. 이전 business_type's
요소를 얻기 위해 (HABTM 관계 작동하지 않습니다 내가 먼저 client.elements = client.elements - business_type.elements
에 DB [1,2,3,4,5,6] - [1,2,3] = [4,5,6]
에 일시적으로 저장하는 before_update
콜백을 사용하여 시도했다 및 after_update에 [4,5,6] + [1,3] = [1,3,4,5,6]
를 얻을 수 client.elements = client.elements + business_type.elements
을 그러나 이것은 이미 새로운 값인 [1,3]
입니다. 어떻게 이전을 얻을 수 있습니까? 또는 after_update
의3210 값은?
미리 도움 주셔서 감사합니다.