2014-09-18 1 views
2

J'ai un projet Rails 4 qui utilise Grape pour l'API, je veux faire quelques validations personnalisées comme décrit dans le raisin documentation. Je veux savoir où dois-je placer mon code de validation personnalisé (comme dans le fichier lib) et dois-je inclure ou exiger quelque chose pour l'utiliser dans mon fichier API?Où placer les validations personnalisées de Raisin dans Rails 4

La documentation vous dit de créer une classe mais je suis confus au sujet de la structure du fichier si je dois écrire de nombreuses validations personnalisées.

Répondre

2

La dernière fois que j'ai utilisé Grape j'ai ajouté des validations personnalisées à lib, je les ai ensuite requises dans toutes les classes d'API qui les utilisaient. Par exemple:

lib/api/validation/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' 

Bien sûr, vous voudrez peut-être pour éviter d'avoir add lib/api/validations to the auto-loader exiger manuellement.

+0

Donc pour chaque validation personnalisée, je devrais avoir un nouveau fichier .rb sous le répertoire de validations, non? – androidharry

+0

Oui, c'est la meilleure façon de structurer le code, d'après mon expérience. –

Questions connexes