我有一种情况,我需要阻止用户明确调用说/town/addBuilding。Town 是我的控制器,而 addBuilding 是执行的操作。
现在,问题是这个动作应该只在我的程序代码中执行,而不是由请求执行它的用户执行。此外,这个动作像回调一样执行。在我的 application_controller 中,当满足某些条件时,将触发控制器操作并进行重定向。在 php 中,一个简单的守卫,比如定义一个守卫并检查它就足够了。rails 中是否有等效的东西,如果有,实现它的最佳方法是什么?
感谢阅读,感谢您的帮助:)
编辑:我正在粘贴一些代码以使其更清晰,请注意 /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
酒馆控制器操作只是我想要执行的纯代码,但前提是重定向发生在应用程序控制器内部。