Проверка наличия переменной в GET-запросе Rails 5
Не уверен, как именно это спросить, так как я учусь на ходу. Я создаю / обновляю информацию о пользователе из моего приложения в стороннюю CRM-систему. У меня есть два метода, которые успешно работают с after_save
Перезвоните. Во время тестирования я бы закомментировал один, чтобы я мог проверить другой, но теперь мне нужно объединить их с оператором if else.
Что должно произойти, когда объединены вместе, это когда 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
...
1 ответ
agile_id
а также agile_id?
это не одно и то же. Вы иногда будете видеть объекты ActiveRecord, которые имеют record.attribute?
который включен через некоторое метапрограммирование.
Таким образом, при определении переменной, такой как agile_id
добавление знака вопроса в конце не только не работает, но и не требуется. просто if agile_id
должно быть достаточно.