0

세 가지 모델이있는 응용 프로그램이 있습니다. 나는 매우 유사하지만 (고객이 자신의 모델을 보증 할만큼 충분히 다른) 고객과 리드를 보유하고 있습니다. 그런 다음 interactable_id 및 interactable_type (물론 '고객'또는 '리드')이있는 "상호 작용"이라고하는 다형성 모델이 있습니다.Rails ActiveRecord - 다형성 ID 업데이트

최근에 (리드가 고객으로 업그레이드 될 때) 리드와 고객 간의 상호 작용을 마이그레이션하는 방법을 만들려고했습니다.

내 코드를 간결하게 유지하고 내 방법을 간단하게 유지하기 위해 interactable_id 및 interactable_type이 고객의 ID와 "고객"으로 각각 변경되도록 상호 작용의 속성을 간단히 업데이트하기로 결정했습니다.

나는 다양한 방법으로이 작업을 시도했지만, 업데이트 할 수있는 유일한 작업은 interactionable_type뿐이었습니다. interactable_id는 내가 시도한 것에 관계없이 변경되지 않습니다. 정적 번호 (customer.id보다는)를 넣으려고했습니다. 나는 update_attributes를 시도하고 속성을 개별적으로 업데이트 한 다음 저장하려고했습니다. 또한 attr_accessible 목록에 interactable_id가 있습니다.

문제가 약간 다르게 다가 가기로 결정했기 때문에이 문제가 발생했지만 정확히 왜 이런 일이 발생했는지에 대한 답변을 찾을 수 없었습니다.

내가 왜 이런지 알 수 있는지 궁금한 내용이었습니다. 다형성 연관 식별자에 어떤 종류의 잠금 장치가 있습니까? 왜 협회를 바꿀 수 없습니까?

답변

1

interaction.interactionable = customer 
interaction.save 
+0

덕분에 작동합니다! 그것을 시도해야한다고 생각 했어야합니다. 왜 그것이 그런 식으로 이해하는지 ... 협회 ID에 어떤 종류의 자물쇠가 있습니까? –

관련 문제