我想知道是否可以限制rails中的请求数量。我试图填补这个( WITHOUT DB ),但无法使用实例变量,以便用户只能调用动作只有5个fimes.I需要这个来显示用户可以用来填充和添加更多细节的空表单,但只有五个表单。所以可以不使用DB并实现{{1}或者仅限于5次的东西
答案 0 :(得分:0)
简短回答:是的。但不是没有数据存储。
你有几个选择:
使用会话的示例
class SomeController
def some_action
session[:some_action_request_count] ||= 0
if session[:some_action_request_count] >= 5
# cleanup
# flash messages
# rendering
else
session[:some_action_request_count] += 1
# do somethign
# rendering
end
end
end
为什么必须使用某种数据存储?因为通常ruby(web)服务器运行多个不共享状态的进程。而且您不能保证每个请求都进入同一个进程。因此,您需要将数据保留在正在运行的服务器进程之外。这就是为什么你不能使用实例变量的原因:因为将在一个单独的进程中为你的下一个请求创建一个新实例。