Ruby on rails ruby on rails regexp或以

Ruby on rails ruby on rails regexp或以,ruby-on-rails,ruby,regex,yaml,Ruby On Rails,Ruby,Regex,Yaml,我试图防止用户过度使用某些操作 我的问题是,我不知道检查操作路径是否与我在YAML文件中定义的路径匹配的最佳方法是什么。正如我所看到的,它可以是正则表达式,也可以是类似于ends\u的方法 目前,我有以下半成品代码。我不确定是否应该以当前的方式在YAML中定义路径,也不确定是否在rack\u attack.rb中调用适当的比较 有人能帮我解释一下为什么他/她推荐的解决方案是这里最好的吗 亚马尔: rack_attack.rb @config = YAML.load_file('config/ra

我试图防止用户过度使用某些操作

我的问题是,我不知道检查操作路径是否与我在YAML文件中定义的路径匹配的最佳方法是什么。正如我所看到的,它可以是正则表达式,也可以是类似于
ends\u的方法

目前,我有以下半成品代码。我不确定是否应该以当前的方式在
YAML
中定义路径,也不确定是否在
rack\u attack.rb
中调用适当的比较

有人能帮我解释一下为什么他/她推荐的解决方案是这里最好的吗

亚马尔:

rack_attack.rb

@config = YAML.load_file('config/rack_attack.yml').with_indifferent_access

    def from_config(key, field)
        @config[key][field] || @config[:default][field]
    end

    @config.keys.each do |key|
        Rack::Attack.throttle(key, limit: from_config(key, :limit), period: from_config(key, :period)) do |req|
        req.ip if /#{from_config(key, :path)}/.match(req.path.to_s) && from_config(key, :method) == req.env['REQUEST_METHOD']
    end
end

我很难理解到底是什么问题。您当前的代码有效吗?还是代码有问题?或者你是在问“有更好的方法吗?”
.end\u with?
和regexp的不同之处在于前者只需检查字符串是否以某个固定字符串结尾,而regexp是regexp,因此功能更强大。总的来说,你要选择最简单的方法。现在似乎正在工作。自从我问起这个问题,我就改成了结束语。我问这个是因为我不确定我做得对。通常,在rails中有一种更可取的方法。
@config = YAML.load_file('config/rack_attack.yml').with_indifferent_access

    def from_config(key, field)
        @config[key][field] || @config[:default][field]
    end

    @config.keys.each do |key|
        Rack::Attack.throttle(key, limit: from_config(key, :limit), period: from_config(key, :period)) do |req|
        req.ip if /#{from_config(key, :path)}/.match(req.path.to_s) && from_config(key, :method) == req.env['REQUEST_METHOD']
    end
end