記事のステータスは「下書き」「公開」の2種類があります。
ステータスに「公開待ち(publish_wait)」を追加してください。
記事編集画面で記事の更新、公開ボタンを押した際の挙動を、以下の要件に従って変更してください。※ modelのコールバックは使わないでください
- 記事のステータスを「公開」または「公開待ち」、公開日時を「未来の日付」に設定して、「更新する」ボタンを押した場合
--> 記事のステータスを「公開待ち」に変更して「更新しました」とフラッシュメッセージを表示
- 記事のステータスを「公開」または「公開待ち」、公開日時を「過去の日付」に設定して、「更新する」ボタンを押した場合
--> 記事のステータスを「公開」に変更して「更新しました」とフラッシュメッセージを表示
- 記事のステータスを「下書き」に設定して、「更新する」ボタンを押した場合
--> 記事のステータスを「下書き」に変更して「更新しました」とフラッシュメッセージを表示
- 公開日時が「未来の日付」となっている記事に対して、「公開する」ボタンを押した場合
--> 記事のステータスを「公開待ち」に変更して「公開待ちにしました」とフラッシュメッセージを表示
- 公開日時が「過去の日付」となっている記事に対して、「公開する」ボタンを押した場合
--> 記事のステータスを「公開」に変更して「公開しました」とフラッシュメッセージを表示
更に、記事のステータスが「公開待ち」で公開日時が過去になっているものがあれば、rakeタスクをライブラリ「whenever」により1時間ごとに走らせ、ステータスを「公開」に変更してください。(※ 公開日時が過去で「公開待ち」となっているデータを画面上で更新しなくても、自動でステータスを公開に変更するようにしたい)
現状、管理画面から1分単位で公開日時を指定できるようになっているが、1時間ごとに指定できるように変更してください。(自動更新するcronの実行間隔が1時間毎なので、分単位で設定しても更新できないため)
テストコード作成時は、cronの定期実行についてはテストを記載しなくても構いません。※ cronの実行対象であるrakeタスクの挙動を確認するテストコードを作成してください。
まずRakeとは、rubyで処理内容を定義できるビルドツールです。