У меня возникла ситуация, когда мне нужно запретить пользователям явно вызывать say /town/addBuilding. Город — это мой контроллер, а 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
Действие контроллера таверны — это просто код, который я хочу выполнить, но только если перенаправление происходит внутри контроллера приложения.