Мы находимся в процессе создания/переноса новых функций в наше веб-приложение. У нас есть API (V1) с именами, которые мобильные приложения используют для связи с приложением.В Rails лучший способ иметь модель с условными выражениями на основе того, пришел ли запрос через API или веб-интерфейс?
В то время как мы находимся на этапе перехода (мы сначала запустим функции для Интернета), как можно различать запросы API и веб-запросы для целей раздвоения логики в файлах общей модели? Нам нужны модели, чтобы они оставались неизменными для мобильных приложений, но были разными для новых больших веб-функций. К сожалению, подобный код
request.format
не доступен в моделях.
Или есть способ сказать контроллерам API использовать разные файлы моделей и иметь отдельные модели для некоторых API-интерфейсов или контроллеров веб-приложений?
Очевидное, что нужно добавить атрибут 'from_api' в соответствующие модели и использовать его в логике уровня модели. Вам нужно будет установить 'from_api = true' во всех контроллерах API, которые создают новые объекты. Но что произойдет, если вы создадите объект в Интернете, а затем отредактируете его через API - для чего это ваша бизнес-логика? Любые ответы, которые мы даем, будут предположениями, не зная, что такое бизнес-логика. –
Одним из примеров является почтовая программа. В мобильном приложении/API модель Cart должна вызывать почтовую программу и передавать один объект (пользователь может покупать только один элемент за раз). В веб-приложении мы создали систему корзины покупок, и модель Cart должна пройти в массиве элементов и позволить почтовой программе знать, что она будет иметь дело с несколькими элементами вместо одного. – rcd