내가 배운대로 배우는 방법을 정확히 묻지 않습니다. 내 앱에서 제 3 자 CRM 시스템으로 사용자 정보를 생성/업데이트하고 있습니다. after_save
콜백을 사용하여 성공적으로 실행되는 두 가지 방법이 있습니다. 테스트하는 동안 나는 다른 하나를 테스트 할 수 있도록 하나의 주석을 달았지만 지금은 if else 문과 결합해야합니다.변수가 레일스 5에 있는지 확인합니다. GET 요청
User
을 저장하면 함께 결합 될 때 시스템에서 사용자가 CRM 시스템에 있는지 확인합니다 (if agile_id?
). 사용자가있는 경우 업데이트 호출로 건너 뛰고 업데이트 된 연락처 데이터를 보내지 만 그렇지 않은 경우 새 CRM 연락처 레코드를 만듭니다.
내가 브라우저에서 수신하고 오류 :
undefined method `agile_id?' for #<User:0x007ffe24cef318>
user.rb
...
after_save :sync_to_agilecrm
...
def sync_to_agilecrm
agile_id = AgileCRM.request :get, 'contacts/search/email/'+email, nil
if agile_id?
contact_data = {
'properties': [
{ 'type': 'SYSTEM', 'name': 'first_name', 'value': first_name },
{ 'type': 'SYSTEM', 'name': 'last_name', 'value': last_name },
{ 'type': 'SYSTEM', 'name': 'email', 'subtype': 'work', 'value': email },
{ 'type': 'SYSTEM', 'name': 'address', 'value': '{\"address\":\"225 George Street\",\"city\":\"NSW\",\"state\":\"Sydney\",\"zip\":\"2000\",\"country\":\"Australia\"}' },
]
}
parsed_contact_data = JSON.parse(contact_data.to_json)
print(AgileCRM.request :post, 'contacts', parsed_contact_data)
else
update_contact_data = {
'id': agile_id,
'properties': [
{ 'type': 'SYSTEM', 'name': 'first_name', 'value': first_name },
{ 'type': 'SYSTEM', 'name': 'last_name', 'value': last_name },
{ 'type': 'SYSTEM', 'name': 'email', 'subtype': 'work', 'value': email },
{ 'type': 'SYSTEM', 'name': 'address', 'subtype': 'work', 'value': address_line1 },
]
}
parsed_update_contact_data = JSON.parse(update_contact_data.to_json)
print(AgileCRM.request :put, 'contacts/edit-properties', parsed_update_contact_data)
end
end
...
그 방법은 너무 길다. 단일 태스크를 수행하는 더 작은 메소드로 분리하십시오. – max
'if agile_id'를 사용하려고합니다. – max
@max 그래, 나는 agile_id가 있는지 알아 내려고 애 쓰고 있는데, 더 짧게 만들길 바란다.하지만 언급 한대로 어둠 속에서 생각하고있다. :) –