Domanda

Ho due classi: l'utente e il messaggio. Qui di seguito sono le definizioni:

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

Quando ricevo i messaggi nel controller, ho anche ottenere gli oggetti utente in

@message.receiver 

e

@message.sender

Questi oggetti contengono alcune informazioni dell'utente (password, ecc) che vorrei rimuovere prima di passarlo alla vista (un oggetto JSON nel mio caso). Qual è il modo migliore di fare questo?

Grazie per l'aiuto.

È stato utile?

Soluzione

Se si sta eseguendo il rendering manualmente gli oggetti nella vista, non c'è bisogno per disinfettare -. La risposta conterrà solo gli elementi si espone

Se si sta utilizzando AJAX e to_json, ci sono diversi modi di rimuovere le informazioni. È possibile utilizzare una select nel primo Model.find al fine di garantire che le informazioni senstive non viene effettivamente restituito dalla query. Vedere attivo Record Interrogazione -. I campi di selezione specifici per più

L'alternativa è quella di ignorare il JSON in sé il rendering per visualizzare solo i campi richiesti, utilizzando:

to_json(:only => [ :column, :column ])
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top