Rails - Создание порядка и строк заказа с REST API - PullRequest
0 голосов
/ 27 июня 2019

У меня просто вопрос относительно того, как реализовать некоторую логику.

Я создаю API, который позволяет клиенту создавать заказы. Это решается с помощью OrderController # create, так что никаких проблем!

Теперь проблема в том, что в заказе может быть много строк-заказов, все отношения установлены правильно, но где я должен создать строки-заказы для заказа?

Должен ли OrderController обрабатывать это или у меня должен быть новый контроллер, который создает строки заказа для конкретного заказа?

Клиент отправляет следующие json-данные:

{
    "status": "paid",
    "total_sum": 20,
    "payment": "card",
    "order_rows": [
        {
            "id": 12,
        },
        {
            "id":13
        }
    ]
}

1 Ответ

0 голосов
/ 28 июня 2019

Я столкнулся с чем-то похожим в проекте, над которым я сейчас работаю.Лучшим (и самым простым и долгосрочным) решением было, безусловно, создание совершенно новой модели / контроллера.

*Order
    status (should be an int or enum probably)
    total (should loop through all order rows and total)
    payment (should be an int or enum probably)
    has_many order_rows

**OrderRow
    belongs_to Order
    item_sku
    item_name
    item_descr
    item_cost
    etc. etc.

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

Преимущества сохраняются.

Это может быть легко определено;scope: this_orders_rows, -> (order_id) {where (order_id: order_id)}

И это избавляет вас от необходимости каждый раз анализировать хэши и массивы.

Чтобы получить техническую информацию об этом, вашorder_controller должен контролировать ТОЛЬКО ваши заказы.Если вы начнете добавлять кучу другого кода для чтения массивов, он будет ОЧЕНЬ загроможден.Всегда лучше перенести это в другую область.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...