У меня есть приложение rails, в котором заказ назначается поставщику для принятия или отклонения заказа, который хранится как статус в таблице назначения заказа этим поставщиком для этого конкретного заказа. Если заказ не будет принят или отклонен поставщиком в течение 15 минут, тогда заказ должен быть автоматически отклонен, то есть статус обновлен, чтобы автоматически отклонить этот поставщик и сохранить его в таблице. Как мне достичь этой задачи?Как установить таймер для автоматического задания значения поля, если он не обновлен в течение 15 минут в рельсах с момента создания?
Estamps::Order
has_many :order_assignments
belongs_to :vendor
Estamps::Vendor
has_many :order_assignments
has_many :orders
Estamps::OrderAssignment
belongs_to :vendor, class_name: 'Estamps::Vendor'
belongs_to :order, class_name: 'Estamps::Order'
Схема для OrderAssignment таблицы:
t.string "status"
t.integer "vendor_id"
t.integer "order_id
После назначения заказ поставщику, поставщик должен обновить статус принят, отвергнут. Если не обновлено для любого назначенного заказа в течение 15 минут, статус должен быть автоматически отклонен. Это должно произойти для любого назначенного порядка. Может ли кто-нибудь помочь мне в этом? Я новичок с рельсами.
Обратите внимание, что вы могли бы определить after_create обратного вызова на модели заказа аналогичным образом, это может даже иметь больше смысла для ваших нужд. –
Дело в том, что мне не нужно уничтожать заказ, просто обновите статус заказа в статусе назначения заказа как «ОТКАЗЫВ». Во-вторых, метод wait в модели заставит все приложение ждать или продолжит создавать заказы и назначать и устанавливать их статус или выполнять любую другую задачу без перерыва, но выполнит указанную операцию для этой конкретной записи order_assignment после 15 минут? Извините, если вопрос кажется глупым, просто хочу понять ноу-хау. –
Это не приведет к тому, что все приложение будет ждать, это точно точка очередей и фоновых работников, все происходит на заднем плане, что означает, что обычно выполняется другой процесс, который обрабатывает все задания, поэтому он не влияет на ваши основные рельсы app (кроме совместного использования того же db, но обычно это нормально). Должна быть нулевая проблема с изменением кода, который я написал, чтобы изменить статус на REJECTED (просто вызывается update_attribute вместо уничтожения), сообщите мне, есть ли у вас проблема. –