J'utilise le raisin pour le développement de mon api de rails qui fonctionne très bien pour tout le modèle sauf la forme de modèle dynamique. Nous avons des modèles suivants ..Comment créer des routes API dynamiques avec Grape on Rails et valider des paramètres personnalisés
1- product_type
2- product_fields
3- products
Le product_type
est HAVING association has_many
à la fois modèle et product_fields
products
. Lors de la création d'un nouveau product_type
, nous pouvons créer divers attributs de champ pour ce product
. Chaque product
a des attributs différents, mais nous les stockons dans des "produits". Je veux générer l'API dynamiquement chaque fois que product_type
est ajouté.
J'ai essayé comme indiqué ci-dessous mais continue à recevoir des erreurs lors de la publication de l'enregistrement. Appréciez toute suggestion.
require 'grape'
module API
module V1
class Products < Grape::API
include API::V1::Defaults
@product_type=ProductType.all
@product_type.each do |producttype|
resource :"#{producttype.name}" do
desc "Create a new product for #{producttype.name}"
params do
requires :product_type_id , type: "Integer", desc: "product type Id"
producttype.productfields.each do |field|
if field.is_required?
requires :"#{field.field_name}" , type: "#{field.filed_type}", desc: "#{field.field_name}"
else
optional :"#{field.field_name}", type: "#{field.filed_type}", desc: "#{field.field_name}"
end
end
end
post do
Products.create!({
product_type_id:params[:product_type_id],
........
........
........
})
end
end
end
end
end
end
Erreur:
NoMethodError - undefined method `collect' for nil:NilClass:
grape-swagger (0.10.1) lib/grape-swagger.rb:70:in `block in combine_namespace_routes'
grape-swagger (0.10.1) lib/grape-swagger.rb:65:in `combine_namespace_routes'
grape-swagger (0.10.1) lib/grape-swagger.rb:39:in `add_swagger_documentation'
app/controllers/api/v1/base.rb:10:in `<class:Base>'
app/controllers/api/v1/base.rb:6:in `<module:V1>'
app/controllers/api/v1/base.rb:5:in `<module:API>'
app/controllers/api/v1/base.rb:4:in `<top (required)>'
Pourriez-vous 1) s'il vous plaît élaborer votre question et l'enrichir avec un exemple et à quoi vous voulez que les URL API ressemblent et 2) assurez-vous que la documentation de vigne ne couvre pas ce problème – croeck
, J'ai mis à jour ma question. – Sri