3

我有一个 Rails 4 项目,它使用 Grape 作为 API 的东西,我想做一些自定义验证,如葡萄文档中所述。我想知道我应该将我的自定义验证代码放在哪里(比如在 lib 文件中),我是否需要在我的 API 文件中包含或需要一些东西才能使用它?

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

4

1 回答 1

3

上次我使用 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

应用程序/api/twitter.rb

class Twitter::API < Grape::API
  require_relative '../../lib/api/validations/minimum_value'

当然,您可能希望添加lib/api/validations到自动加载程序以防止必须手动要求。

于 2014-09-18T05:35:34.600 回答