Ruby on rails 在Rails 4中放置自定义验证的位置

Ruby on rails 在Rails 4中放置自定义验证的位置,ruby-on-rails,validation,ruby-on-rails-4,grape-api,Ruby On Rails,Validation,Ruby On Rails 4,Grape Api,我有一个Rails4项目,它使用Grape进行API,我想做一些Grape中描述的自定义验证。我想知道我应该把我的自定义验证代码放在哪里(比如在lib文件中),我需要在我的API文件中包含或需要一些东西来使用它吗 文档告诉您创建一个类,但如果我必须编写许多自定义验证,我会对文件结构感到困惑。上次使用Grape时,我将自定义验证添加到lib中,然后我要求将它们添加到使用它们的任何API类中。例如: lib/api/validations/minimum_value.rb class AlphaNu

我有一个Rails4项目,它使用Grape进行API,我想做一些Grape中描述的自定义验证。我想知道我应该把我的自定义验证代码放在哪里(比如在lib文件中),我需要在我的API文件中包含或需要一些东西来使用它吗


文档告诉您创建一个类,但如果我必须编写许多自定义验证,我会对文件结构感到困惑。

上次使用Grape时,我将自定义验证添加到lib中,然后我要求将它们添加到使用它们的任何API类中。例如:

lib/api/validations/minimum_value.rb

class AlphaNumeric < Grape::Validations::Validator
  def validate_param!(attr_name, params)
    unless params[attr_name] =~ /^[[:alnum:]]+$/
      raise Grape::Exceptions::Validation, params: [@scope.full_name(attr_name)], message: "must consist of alpha-numeric characters"
    end
  end
end
class Twitter::API < Grape::API
  require_relative '../../lib/api/validations/minimum_value'
类字母数字
app/api/twitter.rb

class AlphaNumeric < Grape::Validations::Validator
  def validate_param!(attr_name, params)
    unless params[attr_name] =~ /^[[:alnum:]]+$/
      raise Grape::Exceptions::Validation, params: [@scope.full_name(attr_name)], message: "must consist of alpha-numeric characters"
    end
  end
end
class Twitter::API < Grape::API
  require_relative '../../lib/api/validations/minimum_value'
class Twitter::API

当然,您可能希望避免手动要求

因此,对于每个自定义验证,我应该在validations目录下有一个新的.rb文件,对吗?是的,根据我的经验,这是构造代码的最佳方法。