В моем приложении rails у меня есть модель работы, в которой я хочу, чтобы статус автоматически менялся на «архивированный» после 30 дней с момента утверждения администратором, возможно ли это? если да, то каков способ сделать это?Автоматическое изменение статуса почты Rails
ответ
Я бы добавил атрибут с именем «archive_time» в качестве даты и времени, когда он войдет в утвержденное состояние. Затем вы можете настроить задачу рейка, чтобы установить архивированное состояние и где archive_time находится в прошлом. Это может выглядеть так:
jobs = Job.where("state = ? and archive_time >= ?", 'approved', Time.now)
jobs.each {|job| job.archive }
Затем планируйте задачу грабли, которые будут выполняться один раз в день. Я бы использовал cron для достижения этого.
Кроме того, драгоценный камень «всякий раз» - это хороший способ управлять рельсами cron jobs , –
Ударная задача или фоновое задание (например, активное задание или замедленное задание) могут сделать трюк, но в этом случае вам могут не понадобиться. Если вы используете временные метки в своей базе данных, вы можете создать область или метод для отметки заданий в архиве.
Например, если у вас есть столбец с именем approved_at
, который является datetime
. Когда вы одобряете задание, вы устанавливаете approved_at = Time.now
.
Теперь вы можете создать метод, который указывает, если работа находится в архиве:
def is_archived?
approved_at && approved_at < Time.now - 30.days
end
И получить все архивные работы, вы можете создать область:
scope :archived, -> { where('approved_at IS NOT NULL AND approved_at <?', Time.now - 30.days)}
Привет, это частично работает, но у меня все еще есть проблема: у меня есть столбец с именем jobstatus в таблице заданий, и я хочу, чтобы меня заменили на «архивированные», когда Задание заархивировано. – rocki
С тем, что я предложил, вам не понадобится 'job_status' (то есть, если у вас есть только 3 состояния: не одобрены, одобрены и заархивированы) – AbM
- 1. Автоматическое изменение статуса заказа на оплату при успешной оплате
- 2. Изменение статуса пользователя
- 3. Изменение статуса с ограничениями
- 4. Изменение статуса флажка onkeypress
- 5. Найти изменение статуса
- 6. vgaswitcheroo изменение статуса
- 7. Слушайте изменение статуса GPS
- 8. Автоматическое автоматическое подключение электронной почты iOS
- 9. Docusign Rails Получение статуса
- 10. Rails расписание электронной почты
- 11. Изменение статуса выпадающего списка Rails в режиме просмотра?
- 12. Автоматическое изменение размера узла
- 13. Автоматическое изменение размеров меток
- 14. Автоматическое изменение xsl
- 15. Автоматическое изменение изображений
- 16. Автоматическое изменение значения переменной
- 17. Автоматическое изменение тегов XML
- 18. Автоматическое изменение языка ввода
- 19. Автоматическое изменение размера div
- 20. Автоматическое изменение цвета/запомнить
- 21. Автоматическое изменение автора узла
- 22. Автоматическое изменение фона
- 23. Автоматическое изменение разрешения FTP
- 24. Автоматическое изменение макета вида
- 25. Автоматическое изменение размера NSView
- 26. Android - автоматическое изменение размера
- 27. Слушайте изменение статуса дефекта ралли
- 28. Изменение статуса httpresponse на netty
- 29. JTable - визуализировать новое изменение статуса
- 30. Как предотвратить изменение статуса переключателя
Вам нужно сделать rake task – Cyzanfar
Я голосовал, чтобы закрыть этот вопрос, потому что я считаю, что он слишком широк для SO. Однако, если вы посмотрите на [Руководство по Rails для активного задания] (http://guides.rubyonrails.org/active_job_basics.html), вы можете получить некоторые идеи. –
@Cyzanfar Итак, если я создам задачу, она будет запущена автоматически или я должен запускать ее каждый день, извините за этот вопрос, но я никогда не работал с задачами – rocki