ユーザーが /town/addBuilding などを明示的に呼び出さないようにする必要がある状況があります。Town はコントローラーで、addBuilding は実行されるアクションです。
さて、問題は、このアクションはプログラムのコードでのみ実行されるべきであり、実行を要求するユーザーによって実行されるべきではないということです。また、このアクションはコールバックのように実行されます。私の application_controller では、何らかの条件が満たされると、コントローラー アクションがトリガーされ、リダイレクトが行われます。PHP では、ガードを定義してチェックするような単純なガードで十分です。レールに同等のものはありますか?もしそうなら、それを実装する最良の方法は何ですか?
読んでくれてありがとう。あなたの助けに感謝します:)
編集: わかりやすくするためにいくつかのコードを貼り付けています。/town/addBuilding は例であり、以下のコントローラー名とアクションの名前は異なることに注意してください。
これが実際のアプリケーション コントローラー コードです。これは、私がコーディングしているブラウザー ゲームの一部です。
def checkQuest
if TavernQuest.hasQuest(current_user)
quest = TavernQuest.getQuest(current_user)
if quest.end_time < Time.now # get quest info and check if the quest has been completed
TavernQuest.deleteQuest(current_user)
redirect_to :controller => 'tavern', :action => 'monsterAttack'
end
end
end
居酒屋コントローラーのアクションは、実行したい単純なコードにすぎませんが、リダイレクトがアプリケーションコントローラー内で発生した場合のみです。