Comment puis-je obtenir request.uri dans le modèle dans Rails?
$request = request
Quand j'écris ce contrôleur, il va fonctionner. Mais si j'ai besoin de cette variable dans le Modèle ou du contrôleur d'Application, Comment puis-je ?
source d'informationauteur Sreeraj
Vous devez vous connecter pour publier un commentaire.
Modèles existent en dehors du contexte de la requête web. Vous pouvez instancier dans la cisr, vous pouvez instancier dans un retard d'emploi, ou d'un script, etc. Si le modèle dépendait de l'objet de la requête, aucune de ces choses serait possible.
Comme tsdbrown dit, vous devez vous en quelque sorte passer dans cette information à partir du contexte qui utilise le modèle.
Je l'ai eu
Maintenant, nous pouvons utiliser le $demande variable globale n'importe où dans le code
Vous n'avez pas accès à l'objet de la requête dans vos modèles, vous aurez à passer la demande.request_uri.
Peut-être par l'intermédiaire d'une méthode personnalisée. par exemple,
@object.custom_method_call(params, request.request_uri)
Une autre option serait d'ajouter un
attr_accessor :request_uri
dans votre modèle et définir/pass:vous aurez besoin de faire un hack pour obtenir la demande.uri dans le modèle. ce qui n'est pas recommandé.
Vous devriez passer en tant que paramètres dans la méthode, qui est défini dans le modèle.
si vous utilisez des rails > 5.0, vous pouvez le faire ci-dessous
ajouter un module dans les modèles et/ou de problèmes
dans applicaton_controller ne
puis dans le thread n'importe où obtenir current_user