2012-05-03 8 views
4

私のデータベースにフィールドと呼ばれるIPがあります。そこには、自分のBlogをビルドしたRailsでメッセージを送信するときに、ユーザのIPアドレスを(#createメソッドで)指定します。Ruby on Railsのフィールドを非表示にする

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

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

ちょうどあなたのユーザーモデルでto_jsonをメソッドを上書き:

答えて

8

あなたはこのようなあなたのコントローラでフォーマットブロックでそれを行うことができます

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

だから私が[:ip]をjsonから除外すれば誰もそれを見ることができないだろうか? –

+0

はい、:exceptは、そのプロパティのJSON出力への書き込みを完全にスキップすることを意味します。 – Nate

+0

exceptを使用すると、指定された属性がjsonエンコーディングに含まれていないことが確認されます。したがって、json表現を参照するユーザーのセットとして「nobody」を定義すると、yesになります。フィールドはDB上に残っているので、データベース管理者はそれを見ることができます。 – emrass

関連する問題