Ich mache schon seit Jahren RoR, aber dies ist mein erstes Projekt mit Mongo (auch mein erstes api-only-Projekt). Ich habe eine schwere Zeit mit HABTM-Verbänden und ich vermute, dass es mit Params zu tun hat, aber ich bin mir nicht sicher, was ich sonst noch versuchen sollte.Mongoid 6, Schienen 5, HABTM "nicht zugelassener Parmeter"
Hier ist, was ich habe:
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
In meinen Projekten Controller, ich habe diese für Parameter:
def project_params
params.permit(:id, :name, :start_date, :target_date, :description, user_ids: [])
end
Und ja, ich habe auch versucht, {benutzerkennungen tun: [] }.
Wenn ich Postman verwenden, um eine URL-PUT-Anfrage zu erstellen, um Benutzer zu einem Projekt hinzuzufügen, erhalte ich einen Fehler "unerlaubter Parameter". Aber ... ich erlaube diesen Parameter, richtig?
Ich bin verrückt, weil ich nicht weiß, ob ich ein Mongo-Problem, ein Rails 5-Problem oder ein API-Problem habe. Alle anderen Anrufe funktionieren gut.
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
Ich würde mich über Ideen freuen, was ich sonst noch versuchen könnte.
Ah! Mein Problem war nicht ein Schienenproblem, es war, dass ich nicht wirklich wusste, wie man Postman benutzt. Vielen Dank für Ihre Antwort, das hat es gelöst! :) – nilatti