【问题标题】:Where to place Grape custom validations in Rails 4在 Rails 4 中放置 Grape 自定义验证的位置
【发布时间】:2014-09-18 05:13:10
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    app/api/twitter.rb

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

    当然你可能想add lib/api/validations to the auto-loader 来避免手动要求。

    【讨论】:

    • 所以对于每个自定义验证,我应该在验证目录下有一个新的 .rb 文件,对吧?
    • 是的,根据我的经验,这是构建代码的最佳方式。
    猜你喜欢
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多