Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将请求限制为Rails控制器3X中的操作_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 将请求限制为Rails控制器3X中的操作

Ruby 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

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