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.

Était-ce utile?

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 ])
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top