在Rails 4中放置Grape自定义验证的位置

时间:2014-09-18 05:13:11

标签: ruby-on-rails validation ruby-on-rails-4 grape-api

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

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

1 个答案:

答案 0 :(得分:2)

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

<强> LIB / API /验证/ 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'

当然,您可能希望add lib/api/validations to the auto-loader以防止必须手动要求。