我有一个使用Grape for API的Rails 4项目,我想做一些自定义验证,如葡萄documentation中所述。我想知道我应该在哪里放置我的自定义验证代码(比如在lib文件中),我是否需要在我的API文件中包含或要求使用它?
文档告诉你创建一个类,但如果我必须编写许多自定义验证,我对文件结构感到困惑。
答案 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以防止必须手动要求。