質問

ユーザーとメッセージの2つのクラスがあります。以下は定義です:

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オブジェクト)に渡す前に削除したいユーザー情報(パスワードなど)が含まれています。これを行う最良の方法は何ですか?

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

役に立ちましたか?

解決

ビューでオブジェクトを手動でレンダリングしている場合、消毒する必要はありません - 応答には、露出する要素のみが含まれます。

Ajaxとto_jsonを使用している場合、情報を削除する方法がいくつかあります。初期モデルでselectを使用することができます。見る アクティブレコードクエリ - 特定のフィールドの選択 多くのための。

代替案は、JSONレンダリングをオーバーライドして、次のことを使用して、必要なフィールドのみを表示することです。

to_json(:only => [ :column, :column ])
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top