Je fais du RoR depuis des années, mais c'est mon premier projet avec Mongo (aussi mon premier projet sur api). Je vais avoir du mal avec les associations HABTM et je pense que ça a à voir avec les params, mais je ne sais pas quoi faire d'autre.Mongoid 6, Rails 5, HABTM "parmeter non autorisé"
Voici ce que j'ai:
class Project
include Mongoid::Document
field :name, type: String
field :start_date, type: Date
field :target_date, type: Date
has_and_belongs_to_many :users
end
class User
include Mongoid::Document
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:jwt_authenticatable, jwt_revocation_strategy: JWTBlacklist
field :email, type: String
field :_id, type: String, default: ->{ email }
{ ... devise stuff ...}
has_and_belongs_to_many :projects
end
Dans mon contrôleur de projets, je présente des paramètres:
def project_params
params.permit(:id, :name, :start_date, :target_date, :description, user_ids: [])
end
Et oui, je l'ai aussi essayé de faire {user_ids: [] } Lorsque j'utilise Postman pour faire une requête URL PUT pour tenter d'ajouter des utilisateurs à un projet, j'obtiens une erreur "paramètre non autorisé". Mais ... je permets ce paramètre, non? Je suis un peu folle parce que je ne sais pas si j'ai un problème de Mongo, un problème de Rails 5, ou un problème d'API. Tous les autres appels fonctionnent bien.
Started PUT "/rapi/projects/3" for 127.0.0.1 at 2017-02-15 22:55:10 -0500
Overwriting existing field _id in class JWTBlacklist.
Overwriting existing field _id in class User.
Processing by Api::V1::ProjectsController#update as JSON
Parameters: {"user_ids"=>"[email protected]", "id"=>"3"}
MONGODB | localhost:27017 | anthem.find | STARTED | {"find"=>"users", "filter"=>{"_id"=>"[email protected]"}}
MONGODB | localhost:27017 | anthem.find | SUCCEEDED | 0.000363703s
Overwriting existing field _id in class Project.
MONGODB | localhost:27017 | anthem.find | STARTED | {"find"=>"projects", "filter"=>{"_id"=>"3"}}
MONGODB | localhost:27017 | anthem.find | SUCCEEDED | 0.000244022s
Unpermitted parameters: user_ids, format
Overwriting existing field _id in class Release.
Completed 204 No Content in 20ms
J'apprécierais des idées sur quoi d'autre que je pourrais essayer.
Ah! Mon problème n'était pas un problème de rails, c'était que je ne savais pas vraiment comment utiliser Postman. Merci pour votre réponse, qui l'a résolu! :) – nilatti