Wie ein Objekt erhalten mit belongs_to in Schienen sanieren 3
-
11-10-2019 - |
Frage
ich zwei Klassen haben: User und Nachricht. Im Folgenden sind die Definitionen:
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
Wenn ich Nachrichten im Controller bekommen, erhalte ich auch die Benutzerobjekte in
@message.receiver
und
@message.sender
enthalten Diese Objekte einige Benutzerinformationen (Passwörter, etc.), dass ich, bevor es zu der Ansicht vorbei entfernen möchte (ein JSON-Objekt in meinem Fall). Was ist der beste Weg, dies zu tun?
Vielen Dank für die Hilfe.
Lösung
Wenn Sie manuell die Objekte in der Ansicht Rendering werden, keine Notwendigkeit zu sanieren -. Die Antwort nur die Elemente enthalten, die Sie belichten
Wenn Sie AJAX und to_json verwenden, gibt es mehrere Möglichkeiten, die Informationen zu entfernen. Sie können eine Auswahl in dem Anfang Model.find verwenden, um sicherzustellen, dass die senstive Informationen nicht tatsächlich aus der Abfrage zurückgegeben werden. Siehe Active Record Abfragen -. Auswahl bestimmte Bereiche für mehr
Die Alternative ist die JSON außer Kraft zu setzen selbst macht nur die erforderlichen Felder anzuzeigen, mit:
to_json(:only => [ :column, :column ])