Comment désinfecter un objet obtenu avec belongs_to dans des rails 3
-
11-10-2019 - |
Question
J'ai deux classes: l'utilisateur et le message. Voici les définitions:
class Message < ActiveRecord::Base belongs_to :receiver, :class_name => 'User', :foreign_key => 'receiver' belongs_to :sender, :class_name => 'User', :foreign_key => 'sender' end class User < ActiveRecord::Base has_many :incoming_messages, :class_name => 'Message', :foreign_key => 'receiver' has_many :outgoing_messages, :class_name => 'Message', :foreign_key => 'sender' end
Quand je reçois des messages dans le contrôleur, je reçois aussi les objets utilisateur dans
@message.receiver
et
@message.sender
Ces objets contiennent des informations utilisateur (mots de passe, etc.) que je voudrais retirer avant de le transmettre à la vue (un objet JSON dans mon cas). Quelle est la meilleure façon de le faire?
Merci pour l'aide.
La solution
Si vous êtes rendu manuellement les objets dans la vue, pas besoin de sanitize -. La réponse ne contiendra que les éléments que vous exposiez
Si vous utilisez AJAX et to_json, il existe plusieurs façons d'éliminer les informations. Vous pouvez utiliser une sélection dans le Model.find initial pour faire en sorte que les informations ne sont pas réellement senstive retour de la requête. Voir active Enregistrement Interrogation -. Champs spécifiques de sélection pour plus
L'alternative consiste à remplacer le JSON se rendant à afficher uniquement les champs nécessaires, en utilisant:
to_json(:only => [ :column, :column ])