Как бы я организовал поток этого кода Rails? - PullRequest
0 голосов
/ 18 августа 2011

Я использую Shippinglogic для сбора информации об отслеживании для отправленных номеров отслеживания.

Я обрабатываю некоторые вещи за кулисами интерфейса, но я не уверенкак правильно организовать это.

Итак, процесс:

  1. Пользователь отправляет номер отслеживания либо через ввод формы, либо через URL (example.com/track/1234567890).Если номер еще не существует в базе данных, то следующий шаг происходит ...
  2. После того, как номер отправлен, я провожу номер через некоторую логику, чтобы определить, кто является перевозчиком (UPS, FedEx,USPS, DHL и т. Д.).Пользователь никогда не указывает ... все это делается автоматически.
  3. После определения оператора связи мне нужно сделать фактический вызов API оператора (через систему Shippinglogic), чтобы получить информацию для отслеживания.
  4. После того, как я получу данные отслеживания, мне нужно сохранить их в базе данных.
  5. Затем данные отслеживания, наконец, будут возвращены пользователю.

Поскольку пользователи могут отправлять либо черезформе или через URL (без какого-либо действия POST), я пытаюсь запустить все это с помощью моего show метода в контроллере, где я проверяю, существует ли номер, и если нет, отправьте его через Number.create(:tracking_number => '1234567890'), но один разЯ вхожу в модель, я просто теряюсь в том, что делать дальше.

1 Ответ

0 голосов
/ 18 августа 2011

Ну, я бы хотел, чтобы пользователи направлялись к новым действиям или действиям по созданию, где вы можете обрабатывать создание и определять, существует ли уже запись. После этого вы, скорее всего, захотите отправить их на страницу шоу, где вы сможете отобразить информацию об отслеживании из вашего источника данных и любую информацию, которую вы сохранили в своей базе данных. Таким образом, вы сохраняете природу приложения, и другие разработчики смогут работать с приложением, если это необходимо.

Edit: У меня был такой проект, и я переместил свой код обнаружения в отдельную функцию внутри модели, чтобы я мог вносить в него изменения и абстрагировать его от конкретного вызова модели. Я выполнял свои запросы API в фоновом режиме для модели, чтобы я мог кэшировать данные в базе данных и обновлять записи, которые считались активными один раз в час.

В основном, если нужно было использовать данные из записи или сохранить некоторые данные как часть записи, я сделал функцию в модели. Это позволило мне отделить кучу функций от конкретных модификаций действий контроллера и т. П.

...