2012-05-03 92 views
4

我在我的数据库中有一个名为IP的字段,当我在Rails中构建的博客中发送消息时,我放置了用户IP(在#create方法中)。隐藏Ruby on Rails中的字段

但是当我想以另一种格式(JSON)查看文章时,该字段是可见的。 如何隐藏字段IP?

回答

8

你可以做到这一点的格式块在你的控制器是这样的:

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 
+0

所以如果我从json中排除[:ip],我可以肯定没人能看到它吗? –

+0

是的,:except表示它完全跳过将该属性写入JSON输出。 – Nate

+0

使用except可以确保给定的属性不包含在json编码中。因此,如果您将“nobody”定义为查看json表示的用户组,那么是的。该字段仍然存在于数据库中,因此数据库管理员将能够看到它。 – emrass