Rails 3でbelnings_toで取得したオブジェクトを消毒する方法3
-
11-10-2019 - |
質問
ユーザーとメッセージの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 ])
所属していません StackOverflow