2010-12-18 4 views
1

У меня есть два класса: пользователь и сообщение. Ниже приведены определения:Как дезинфицировать объект, полученный с помощью sort_to в rails 3

 
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 

Когда я получаю сообщения в контроллере, я также получить пользовательские объекты в

@message.receiver

и

@message.sender

Эти объекты содержат некоторую информацию о пользователе (пароли и т. д.), которые я хотел бы удалить, прежде чем передавать его в представление (объект json в моем случае). Каков наилучший способ сделать это?

Спасибо за помощь.

ответ

1

Если вы вручную визуализируете объекты в представлении, не нужно санировать - ответ будет содержать только элементы, которые вы выставите.

Если вы используете AJAX и to_json, существует несколько способов удаления информации. Вы можете использовать select в исходном Model.find, чтобы гарантировать, что информация senstive фактически не возвращается из запроса. См. Active Record Querying - selecting specific fields для получения дополнительной информации.

Альтернативой переопределить JSON рендеринга себя отображать только необходимые поля, используя:

to_json(:only => [ :column, :column ]) 
+0

Да, большое предложение, спасибо! :) –

 Смежные вопросы

  • Нет связанных вопросов^_^