1

User と Message の 2 つのクラスがあります。以下に定義を示します。

class Message < ActiveRecord::Base
  所属先 :receiver, :class_name => 'User', :foreign_key => 'receiver'
  belongs_to :sender, :class_name => 'User', :foreign_key => 'sender'
終わり

クラス User < ActiveRecord::Base
  has_many :incoming_messages, :class_name => 'メッセージ', :foreign_key => '受信者'
  has_many :outgoing_messages, :class_name => 'メッセージ', :foreign_key => '送信者'
終わり

コントローラーでメッセージを取得すると、ユーザーオブジェクトも取得します

@メッセージ受信者

@メッセージ送信者

これらのオブジェクトには、ビュー (私の場合は json オブジェクト) に渡す前に削除したいユーザー情報 (パスワードなど) が含まれています。これを行う最善の方法は何ですか?

手伝ってくれてありがとう。

4

1 に答える 1

1

ビュー内のオブジェクトを手動でレンダリングする場合は、サニタイズする必要はありません。応答には、公開した要素のみが含まれます。

AJAX と to_json を使用している場合、情報を削除する方法はいくつかあります。最初の Model.find で select を使用して、機密情報がクエリから実際に返されないようにすることができます。詳細については、アクティブ レコード クエリ - 特定のフィールドの選択を参照してください。

別の方法は、次を使用して、必要なフィールドのみを表示するように JSON レンダリング自体をオーバーライドすることです。

to_json(:only => [ :column, :column ])
于 2010-12-19T00:10:15.793 に答える