2016-09-19 1 views
0

Мы находимся в процессе создания/переноса новых функций в наше веб-приложение. У нас есть API (V1) с именами, которые мобильные приложения используют для связи с приложением.В Rails лучший способ иметь модель с условными выражениями на основе того, пришел ли запрос через API или веб-интерфейс?

В то время как мы находимся на этапе перехода (мы сначала запустим функции для Интернета), как можно различать запросы API и веб-запросы для целей раздвоения логики в файлах общей модели? Нам нужны модели, чтобы они оставались неизменными для мобильных приложений, но были разными для новых больших веб-функций. К сожалению, подобный код

request.format

не доступен в моделях.

Или есть способ сказать контроллерам API использовать разные файлы моделей и иметь отдельные модели для некоторых API-интерфейсов или контроллеров веб-приложений?

+0

Очевидное, что нужно добавить атрибут 'from_api' в соответствующие модели и использовать его в логике уровня модели. Вам нужно будет установить 'from_api = true' во всех контроллерах API, которые создают новые объекты. Но что произойдет, если вы создадите объект в Интернете, а затем отредактируете его через API - для чего это ваша бизнес-логика? Любые ответы, которые мы даем, будут предположениями, не зная, что такое бизнес-логика. –

+0

Одним из примеров является почтовая программа. В мобильном приложении/API модель Cart должна вызывать почтовую программу и передавать один объект (пользователь может покупать только один элемент за раз). В веб-приложении мы создали систему корзины покупок, и модель Cart должна пройти в массиве элементов и позволить почтовой программе знать, что она будет иметь дело с несколькими элементами вместо одного. – rcd

ответ

0

Я знаю, что вы должны поместить как можно больше кода в модель, однако содержит ли этот конкретный фрагмент кода?

Это вопрос, потому что это 1) представление ориентировано и 2) забота о состоянии/запросе.

Это заставляет меня думать, что этот код действительно должен находиться внутри контроллеров.

контроллеры API использовать различные файлы модели

Ofc, просто использовать другую модель ...

Вы предоставили мало информации о том, что вы пытаетесь достичь, что делает все сложно.

Однако это похоже на некоторый ориентированный на презентацию код на основе состояния сети.

Для этого добавьте декораторы в свое приложение и сделайте условную презентацию там.

Смежные вопросы