В моем приложении rails у меня есть 2 разных типа активных пользователей записи, например, User1 имеет first_name, email и т.д., а User2 также имеет эти атрибуты, но для пользователя 2 мы получаем данные из внешнего API, поэтому при создании счетов я передаю модель пользователя в счет-фактуру, и я думаю сделать что-то подобное для User2
class User2
def first_name
if persisted?
data['firstName']
end
end
def email
if persisted?
data['email']
end
end
private
def data
@__data ||= ExternalUserInfo.new(external_id).call
end
end
Клиент ExternalUserInfo вызовет внешний API и вернет ответ как таковой.
{
firstName: "John", email: "john@example.com"
}
Проблема с этим подходом заключается в том, что всякий раз, когда мне нужно будет написать спецификацию, которая должна создать этого пользователя, мне нужно будет обернуть этот тест вокруг кассеты видеомагнитофона или заглушить внешний запрос. Поэтому я хотел посмотреть, что могло бы быть потенциальным решением, чтобы избежать этого, и имеет ли этот дизайн вообще смысл.