Ruby on rails 将请求限制为Rails控制器3X中的操作
我想知道是否有可能限制rails中的请求数量。我尝试在没有DB的情况下实现这一点(),但是无法使用实例变量,因此用户只能调用一个操作5次。我需要它来显示空表单,用户可以使用它来填写和添加更多详细信息,但只能5个表单。因此,如果不使用DB和implementRuby on rails 将请求限制为Rails控制器3X中的操作,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,我想知道是否有可能限制rails中的请求数量。我尝试在没有DB的情况下实现这一点(),但是无法使用实例变量,因此用户只能调用一个操作5次。我需要它来显示空表单,用户可以使用它来填写和添加更多详细信息,但只能5个表单。因此,如果不使用DB和implement添加更多数据或仅限5次的内容,是否有可能对但不是没有数据存储 您在这里有几个选项: 会话(客户端) 数据库(服务器端) 键/值存储,如Redis(服务器端) 使用会话的示例 class SomeController def some_ac
添加更多数据或仅限5次的内容,是否有可能对但不是没有数据存储
您在这里有几个选项:
会话(客户端)
数据库(服务器端)
键/值存储,如Redis(服务器端)
使用会话的示例
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)服务器通常运行多个不共享状态的进程。而且您也不能保证每个请求都到达同一个进程。因此,您需要将数据持久化到正在运行的服务器进程之外。这就是为什么不能使用实例变量的原因:因为下一个请求将在单独的流程中创建一个新实例