9

データベースに IP というフィールドがあり、Rails で構築されたブログでユーザーがメッセージを送信するときに (#create メソッドで) ユーザー IP を入力します。

しかし、記事を別の形式 (JSON) で表示したい場合は、フィールドが表示されます。フィールド IP を非表示にするにはどうすればよいですか?

4

2 に答える 2

12

次のように、コントローラーのフォーマット ブロックで実行できます。

respond_to do |format|
  format.json { render :json => @user, :except=> [:ip] } # or without format block: @user.to_json(:except => :ip)
end

一般的に特定のフィールドを除外する場合は、ユーザー モデルの to_json メソッドを上書きするだけです。

class User < ActiveRecord::Base
  def to_json(options={})
    options[:except] ||= [:ip]
    super(options)
  end
end

更新: Rails 6 では、メソッドは次のようになりましたas_json

class User < ApplicationRecord
  def as_json(options={})
    options[:except] ||= [:ip]
    super(options)
  end
end
于 2012-05-03T13:03:28.043 に答える