ruby-on-rails - 在 Ruby on Rails 中隐藏字段

标签 ruby-on-rails ruby database blogs field

我的数据库中有一个名为 IP 的字段,当他在我的 Rails 内置博客中发送消息时,我将用户 IP(在 #create 方法中)放在该字段中。

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

最佳答案

您可以在 Controller 中的格式 block 中执行此操作,如下所示:

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

关于ruby-on-rails - 在 Ruby on Rails 中隐藏字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10431741/

相关文章:

mysql - rails : displaying an image from a blob field in a database

MySQL 在更新另一个表后触发 INSERT 到表?

MySQL Workbench 导出权限

ruby-on-rails - rails : How to change Bundler default version

ruby-on-rails - mongoid .limit 在 mongoid 3.1.x 中不起作用

ruby-on-rails - 仅在 Rails ERB 中存在记录时才显示记录的优雅方式

ruby - 如何在软件集合环境中控制 ruby​​-devel 的存在

java - 从 ruby​​ 检索 Java 列表

sql - 使用单个查询在 postgres 数据库中搜索多个表?

ruby-on-rails - heroku Errno::ENOENT(没有这样的文件或目录 -/assets/)